заменить спиновый замок сигналом - PullRequest
3 голосов
/ 03 июня 2009

У меня много кодовых блокировок в моем многопоточном коде, и большую часть времени они ждут, пока другие потоки выполнят свою работу и, таким образом, много раз жуют использование процессора. В Linux я обычно использую pthread_cond_wait и pthread_cond_signal, чтобы приостановить поток и проснуться при получении сигнала. Есть ли что-то подобное в буст-библиотеках? Беглый взгляд, я не смог найти ничего.

Визуальная студия 2005

Ответы [ 2 ]

4 голосов
/ 03 июня 2009

Нашел его, boost называет их условными переменными: http://www.boost.org/doc/libs/1_39_0/doc/html/thread/synchronization.html#thread.synchronization.condvar_ref

1 голос
/ 03 июня 2009

Вы ищете мьютекс или семафор. Библиотека Boost имеет поддержку Mutex и Semaphore .

Mutex - это двоичный семафор, который просто рассматривается как блокировка, позволяющая только одному потоку проходить через критическую секцию .

Подсчет семафоров может помочь упростить некоторые ситуации, когда блокировка (Mutex) слишком ограничена.

...