Я использовал boost::mutex::scoped_lock
таким образом:
void ClassName::FunctionName()
{
{
boost::mutex::scoped_lock scopedLock(mutex_);
//do stuff
waitBoolean=true;
}
while(waitBoolean == true ){
sleep(1);
}
//get on with the thread's activities
}
По сути, он устанавливает waitBoolean, а другой поток сообщает об этом, устанавливая waitBoolean в false;
Однако, похоже, это не работает, потому что другой поток не может заблокировать mutex_ !!
Я предполагал, что, заключив scoped_lock в скобки, я бы прекратил его блокировку. Это не тот случай? Чтение онлайн говорит о том, что оно отказывается от мьютекса только при вызове деструктора. Разве он не будет уничтожен, когда выйдет за пределы этого локального контекста?
Сигнальная часть кода:
while(running_){
boost::mutex::scoped_lock scopedLock(mutex_);
//Run some function that need to be done...
if(waitBoolean){
waitBoolean=false;
}
}
Спасибо!