Правда ли, что С++ 0x поступит без семафоров? Уже есть некоторые вопросы о переполнении стека относительно использования семафоров. Я использую их (posix semaphores) все время, чтобы поток ожидал некоторого события в другом потоке:
void thread0(...)
{
doSomething0();
event1.wait();
...
}
void thread1(...)
{
doSomething1();
event1.post();
...
}
Если бы я сделал это с помощью мьютекса:
void thread0(...)
{
doSomething0();
event1.lock(); event1.unlock();
...
}
void thread1(...)
{
event1.lock();
doSomethingth1();
event1.unlock();
...
}
Проблема: он уродлив, и он не гарантирует, что thread1 сначала блокирует мьютексы (учитывая, что тот же поток должен блокировать и разблокировать мьютекс, вы также не можете заблокировать событие1 до начала thread0 и thread1).
Итак, поскольку boost также не имеет семафоров, что является самым простым способом достижения вышеуказанного?