remplacer verrou de rotation avec un signal
Question
J'ai beaucoup de serrures de spin dans mon code multithread et la plupart du temps, ils sont en attente d'autres threads pour faire un travail et donc mâcher beaucoup d'utilisation cpu. Dans linux j'utilise normalement pthread_cond_wait et pthread_cond_signal pour mettre en pause un fil et se réveiller au signal. Y at-il quelque chose comme ça dans les bibliothèques Boost? Avoir un rapide coup d'oeil je ne pourrais pas trouver quelque chose.
Visual Studio 2005
La solution
Je l'ai trouvé, boost les appelle variables de condition: http://www.boost.org/doc/libs/1_39_0/doc/html/thread/synchronization.html#thread.synchronization.condvar_ref
Autres conseils
Vous cherchez un Mutex ou un Sémaphore. La bibliothèque Boost ne Mutex et le soutien de Sémaphore.
A Mutex est un binaire Sémaphore, qui est tout simplement considéré comme un verrou, ce qui permet un seul thread de passer par votre section critique .
sémaphores peut aider à simplifier certaines situations où un verrou (Mutex) est trop restrictive.