замените блокировку вращения сигналом
Вопрос
у меня много спиновых блокировок в моем многопоточном коде, и большую часть времени они ожидают, пока другие потоки выполнят работу, и, таким образом, значительно сокращают загрузку процессора.В Linux я обычно использую pthread_cond_wait и pthread_cond_signal для приостановки потока и пробуждения при подаче сигнала.Есть ли что-то подобное в библиотеках boost?Бегло просмотрев, я ничего не смог найти.
Visual Studio 2005
Решение
Нашел это, boost называет их условными переменными: http://www.boost.org/doc/libs/1_39_0/doc/html/thread/synchronization.html#thread.synchronization.condvar_ref
Другие советы
Вы ищете Мьютекс или Семафор.В библиотеке Boost действительно есть Мьютекс и семафор Поддержка.
Мьютекс - это двоичный семафор, который просто рассматривается как блокировка, позволяющая только одному потоку проходить через ваш критическая секция.
Подсчет семафоры может помочь упростить некоторые ситуации, когда блокировка (мьютекс) является слишком ограничительной.