Bonjour,
j'aimerais savoir comment faire pour avoir une variable statique, mais thread-safe.
Par exemple sous windows la fonction rand() se modifie à chaque à appel mais dans son thread, et n'affecte pas les autres threads.
Version imprimable
Bonjour,
j'aimerais savoir comment faire pour avoir une variable statique, mais thread-safe.
Par exemple sous windows la fonction rand() se modifie à chaque à appel mais dans son thread, et n'affecte pas les autres threads.
Il faut utiliser du stockage spécifique au thread.
Comment faire cela dépend de ton système d'exploitation etc.
VC++ te permet de stocker une variable dans un TLS avec __declspec( thread ):
http://msdn2.microsoft.com/en-us/lib...zb(VS.80).aspx
autre option:
http://www.codeproject.com/threads/tls.asp
Hop, une petite recherche sur TLS
-> http://www.developpez.net/forums/sho...&highlight=tls
Compléments : les non-PODs pourraient bien être supportés directement en C++0x.
Remarque au sujet de __declspec(thread) : Une DLL contenant des variables ainsi déclarées ne peut être chargée qu'au démarrage du programme : Ces DLLs deviennent incompatibles avec LoadLibrary().
C'est pourquoi dans les DLLs, il est conseillé d'utiliser le TLS manuellement.
http://msdn2.microsoft.com/en-us/lib...8x(VS.80).aspx
http://msdn2.microsoft.com/en-us/lib...97(VS.80).aspx
merci pour vos liens le include <tls.h> m'a l'air bien.