C'est une question complexe, réfléchissez bien avant de répondre.
Considérez la situation. Les deux fils (un lecteur et un écrivain) à accéder à une seule global int
. Est-il sécuritaire? Normalement, je réponds sans réfléchir, oui!
Cependant, il me semble que Herb Sutter ne le pense pas. Dans ses articles sur l'efficacité de la simultanéité, il parle d'un imparfait sans verrouillage de la file d'attente et la version corrigée.
À la fin du premier article et le début de la deuxième, il parle rarement considérée comme un trait de variables, l'ordre d'écriture. Int sont atomiques, bon, mais les services de renseignements ne sont pas nécessairement ordonné ce qui pourrait détruire tout sans verrouillage de l'algorithme, y compris mon scénario ci-dessus. Je suis entièrement d'accord que la seule façon de garantir corriger le comportement multithread sur toutes les plateformes actuelles et futures est d'utiliser atomics(AKA les barrières de la mémoire) ou les mutex.
Ma question; est d'écrire ré-odering jamais un problème sur un matériel réel? Ou est le multithread paranoïa juste d'être pédant?
Ce sur classique monoprocesseur systèmes?
Ce sujet de plus simple, les processeurs RISC comme un intégré power-pc?
Précisions: je suis plus intéressé par ce que M. Sutter a déclaré à propos du matériel (processeur/cache) la réorganisation de la variable écrit. Je peux arrêter l'optimiseur de casser le code avec des commutateurs du compilateur ou de la main de l'inspection de l'assemblée de post-compilation. Cependant, j'aimerais savoir si le matériel peut encore gâcher le code dans la pratique.