Здравствуйте
Читаю доку boost::thread и не пойму, почему condition_variable сделан именно так.
Хочется чего-то вроде обычного event, с примерно таким использованием:
event evl;
void thread1()
{
// готовим какие-то данные
ev1.raise();
}
void thread2()
{
ev1.wait();
// данные готовы
}
Однако с использованием condition_variable это превращается в:
bool ev1_var;
condition_variable ev1_cond;
mutex ev1_mut;
void thread1()
{
// готовим какие-то данные
ev1_var = true;
ev1_cond.notify_one();
}
void thread2()
{
unique_lock<mutex> lock(ev1_mut);
while(!ev1_var)
ev1_cond.wait(lock);
// данные готовы
}
Как-то очень многословно получается... Зачем вообще такая "сложная" схема применения нужна? Или я чего-то не понимаю — наставьте на путь истинный
Спасибо!