2011-01-11 1 views
1

Noob question:En utilisant Win32 événement Objets

Ce lien montre un exemple de CreateEvent et CreateThread

http://msdn.microsoft.com/en-us/library/ms686915(v=vs.85).aspx

Ma question est si le ThreadProc est pas thread vraiment en sécurité?

Spécifiquement, la variable dwWaitResult. Puisque tous les threads attendent sur le même événement, il s'avère que ce code fonctionne mais que des événements différents ont été créés, par exemple, cela ne fonctionnerait pas correctement?

Répondre

3

La variable dwWaitResult est une variable locale de cette fonction. Ainsi chaque thread individuel a sa propre copie, ce qui assure que la variable est thread-safe. Chaque thread a sa propre pile, donc toutes les variables locales sont spécifiques au thread individuel.

+0

"donc toutes les variables locales sont spécifiques au thread individuel." Est-il vrai que parce que la variable est locale et non statique que chaque appelant (thread) a une instanciation séparée de la variable dwWaitResult? – Eric

+0

@Eric M, Oui. Si la variable était marquée comme statique dans la fonction, elle serait partagée entre toutes les instances. –

0

L'événement est créé par son nom, donc si l'événement est déjà créé, il est réutilisé dans un autre thread "créant" un événement du même nom. Par conséquent, l'exemple de code IS thread safe.

Questions connexes