Pregunta

Actualmente estoy portar una biblioteca de C ++ de Windows a MacOS como un proyecto de pasatiempo como una experiencia de aprendizaje. Me encontré con algo de código utilizando el Win Interlocked * funciones y por lo tanto he estado tratando de leer sobre el tema en general.

Lectura preguntas relacionadas aquí en SO, entiendo que hay diferentes maneras de hacer estas operaciones, dependiendo del sistema operativo. * Entrelazada en Windows, OSAtomic * en MacOS y también he encontrado que los compiladores tienen incorporado operaciones (intrínsecos) de este.

Después de leer gcc orden interna de acceso a memoria atómica , me quedo preguntando ¿cuál es la diferencia entre intrínseca y la OSAtomic * o * Interlocked queridos? es decir, no puedo elegir entre OSAtomic * o incorporado gcc si estoy en MacOS cuando utilizar gcc? Lo mismo si estaría en Windows utilizando gcc.

También leyó que en Windows Interlocked * viene como tanto en línea como versiones intrínsecas. ¿Qué considerar al elegir entre intrínseca o en línea?

En general, ¿hay múltiples opciones en sistemas operativos a lo uso? O es esto de nuevo "depende"? Si es así, ¿qué depende?

Gracias!

¿Fue útil?

Solución

El problema real es la siguiente.

El conjunto de chips Intel que como todos sabemos y el amor no tiene fin bien definido para las escrituras de memoria.

Intel® 64 Orden Arquitectura de memoria Libro Blanco . Este documento proporciona un intento de definir cuidadosamente el orden de escritura de memoria.

[Este documento se ha fusionado en volumen 3A de Intel 64 y del IA-32 Arquitecturas Desarrollador de Software Manual.]

Intel® 64 e IA-32 Manual de arquitecturas de software para desarrolladores de volumen 3A:. Sistema de Guía de Programación Parte 1 Se trata de la revisión de dicho documento

http://www.intel.com/products/processor/manuals/

Desde el chip en sí no garantiza órdenes específicas de escritura en memoria, se deja al sistema operativo a la consistencia de garantía.

El "depende" es "depende de la API del sistema operativo en el para el que está la construcción de software."

Más de lectura: http://en.wikipedia.org/wiki/Memory_ordering

http://rsim.cs.illinois.edu/ Pubs / 10-cacm-memoria-models.pdf

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