Ne présumez jamais que les Api externes sont thread-safe. Si elle n'est pas explicitement mentionné dans leurs docs, ne pas les appeler simultanément à partir de plusieurs threads. Au lieu de cela, limiter votre utilisation d'entre eux pour un seul thread ou utiliser un mutex pour empêcher les appels simultanés (ce qui est assez similaire pour les bibliothèques GUI).
Le point suivant est lié au langage. Rappelez-vous, C++ a pas (encore) bien définis approche du filetage. Le compilateur/optimiseur ne sais pas si le code peut être appelé en même temps. L' volatile
mot-clé est utile pour éviter certaines optimisations (c'est à dire la mise en cache de la mémoire des champs dans les registres du CPU) en multi-thread contextes, mais c'est pas de mécanisme de synchronisation.
Je le recommande coup de pouce pour les primitives de synchronisation. Ne salissez pas avec plate-forme Api. Ils font de votre code difficile à port parce qu'ils ont des fonctionnalités similaires sur toutes les grandes plates-formes, mais légèrement différente de détail de comportement. Boost résout ces problèmes en exposant les fonctionnalités à l'utilisateur.
En outre, si il ya même la plus petite chance qu'une structure de données qui pourrait être écrit par deux threads en même temps, utiliser les primitives de synchronisation pour le protéger. Même si vous pensez que cela ne se produira une fois dans un million d'années.