Question

Je suis actuellement le portage d'une bibliothèque Windows C pour Mac OS en tant que projet passe-temps comme une expérience d'apprentissage. Je suis tombé sur un code à l'aide du Win Interlocked * fonctions et donc j'ai essayé de lire sur le sujet en général.

Lecture des questions connexes ici, je crois comprendre qu'il ya différentes façons de faire ces opérations en fonction du système d'exploitation. * Interlocked dans Windows, OSAtomic * dans MacOS et j'ai aussi constaté que les compilateurs ont des opérations (intrinsèques) builtin pour cela.

Après avoir lu gcc intégré accès à la mémoire atomique , je suis à me demander quelle est la différence entre intrinsèque et la OSAtomic * ou * Interlocked les? Je veux dire, je ne peux pas choisir entre OSAtomic * ou builtin gcc si je suis sur Mac OS quand je utiliser gcc? Le même si je serais sur Windows en utilisant gcc.

Je lis aussi que sous Windows Interlocked * viennent à la fois les versions en ligne et intrinsèques. Qu'est-ce à considérer lors du choix entre intrinsèque ou en ligne?

En général, y at-il des options multiples sur les systèmes d'exploitation quoi utiliser? Ou est-ce encore une fois « ça dépend »? Si oui, qu'est-ce que cela dépend?

Merci!

Était-ce utile?

La solution

La vraie question est.

Le chipset Intel que nous connaissons tous et l'amour ne dispose pas des commandes bien définies pour les écritures de mémoire.

Intel® 64 Memory Architecture Commande Livre blanc . Ce document constitue une tentative de définir soigneusement la commande d'écriture de mémoire.

[Ce document a été fusionné dans le Volume 3A d'Intel 64 et Manuel de l'IA-32 Software Architectures Developer.]

Intel® 64 et IA-32 Manuel Volume 3A de Architectures Software Developer. Guide de programmation système Partie 1 Ceci est la révision de ce document

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

Étant donné que la puce elle-même ne garantit pas les commandes d'écriture de mémoire spécifique, il est laissé à l'OS pour garantir la cohérence.

Le « ça dépend » est « cela dépend de l'API dans le système d'exploitation pour lequel vous construisez le logiciel. »

Plus de lecture: http://en.wikipedia.org/wiki/Memory_ordering

http://rsim.cs.illinois.edu/ pubs / 10-MCAC-memory-models.pdf

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top