Представьте, что у вас есть небольшой метод расчета, который начинается потоком:
boost::mutex mMutex;
void MyClass::DoSomething {
boost::unique_lock<boost::mutex> tLock(mMutex);
if(tLock.owns_lock() {
// do some stuff...
}
}
И вы хотите начать это с потока, созданного из различных функций-членов. Их можно назвать одновременными, но вы не можете знать, когда:
void MyClass::Process {
boost::thread t1(&MyClass::DoSomething, this);
// go on ...
}
void MyClass::Foo {
boost::thread t2(&MyClass::DoSomething, this);
// and something more ...
}
Как вообще запретить выполнение t2
, если запущен t1
? Кажется, мой unique_lock
не работает.