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