¿Cómo probaría un código y establecería el comportamiento sin una instrucción de hardware especial?

StackOverflow https://stackoverflow.com/questions/107184

Pregunta

La mayoría de las implementaciones que encuentro requieren una instrucción de hardware para hacer esto.Sin embargo, dudo mucho que esto sea necesario (si lo es, no puedo entender por qué...)

¿Fue útil?

Solución

No necesita una prueba ni una instrucción configurada para obtener el bloqueo de exclusión mutua, si eso es lo que está preguntando.Dijkstra describió el primer algoritmo de exclusión mutua que conozco en 1965.El título del artículo era "Solución de un problema en el control de programación concurrente", busque en Google una copia cerca de usted.El algoritmo original no requería ningún soporte especial del hardware, pero proporcionar una instrucción atómica en la CPU mejora drásticamente el rendimiento.

Prueba y configuración, intercambio atómico y condicional de almacenamiento + vinculado a carga son primitivas comunes que pueden proporcionar las CPU.Todos se pueden usar para implementar la exclusión mutua, que luego se puede usar para implementar cualquier semántica de bloqueo que desee.

Otros consejos

Si desea una forma transversal de hacerlo y está usando gcc, puede usar las funciones atómicas integradas de gcc:

http://gcc.gnu.org/onlinedocs/gcc/Atomic-Builtins.html

Llamarlos dará como resultado una instrucción de máquina específica del hardware para la arquitectura de compilación actual.En aquellos que no los soportan, la compilación fallará.(Creo...)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top