Spin-Lock mit Signal ersetzen
Frage
ich habe eine Menge von Spin-Locks in meinem Multi-Thread-Code und die meisten der Zeit, die sie für andere Threads warten Arbeit zu tun und somit eine Menge CPU-Auslastung kauen. In Linux verwenden normalerweise i pthread_cond_wait pthread_cond_signal und einen Faden zu pausieren und aufwachen, wenn signalisiert wird. Gibt es so etwas wie dies in den Boost-Bibliotheken? i einen kurzen Blick zu haben könnte nicht irgend etwas finden.
Visual Studio 2005
Lösung
es gefunden, boost nennt sie Bedingungsvariablen: http://www.boost.org/doc/libs/1_39_0/doc/html/thread/synchronization.html#thread.synchronization.condvar_ref
Andere Tipps
Sie suchen ein Mutex oder eine Semaphore. Die Boost-Bibliothek hat Mutex und Semaphore Unterstützung.
Ein Mutex ist ein Binary Semaphore, die einfach als eine Sperre gedacht wird, nur ein Thread erlaubt, um durch Ihre kritische Abschnitt .
Semaphore kann helfen, einige Situationen, in denen eine Sperre (Mutex) zu vereinfachen zu restriktiv ist.