Bonjour
Voici la situation :
J'ai une fonction f() qui contient une variable static. Le premier appel � f() est effectu� dans le thread A. Est-il possible d'acceder � la variable static de f() dans le thread B ?
Bonjour
Voici la situation :
J'ai une fonction f() qui contient une variable static. Le premier appel � f() est effectu� dans le thread A. Est-il possible d'acceder � la variable static de f() dans le thread B ?
quelque soit le nombre de therads appelant f, ils verront tous la m�me variable static,
et c'est la que ca va devenit drole :
suppose que cette variable soit une chaine de caract�res, tu fais un strcpy dessus dans un thread, le thread est pr�empt� et un autre commence son strcpy....
quand le premier reprend la main, il �cras ela moiti� de ce qu'a �crit l'autre....
donc faudra dans la plupart des cas "s�rialiser" l'acc�s � ta variable
C'est entre processus que chacun a sa propre variable static, sauf cas sp�cial. Les thread partagent le m�me espace d'adressage.
Sous Linux/ Unix je ne sais pas mais en programmation Windows il y a des API comme InterLockIncrement si je ne me trompe destin�es � cela
Oui mais uniquement pour "proteger" une incrementation. Sinon pour syncrhoniser les threads on retrouve les objets connus ( event , section critique..)Sous Linux/ Unix je ne sais pas mais en programmation Windows il y a des API comme InterLockIncrement si je ne me trompe destin�es � cela
sinon, boost fait ca tres bien avec boost::mutex
www.boost.org
Partager