【发布时间】:2011-09-21 12:49:05
【问题描述】:
假设你有一个小计算方法,它是由一个线程启动的:
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 ...
}
如果t1 正在运行,如何防止t2 被执行?我的unique_lock 似乎失败了。
【问题讨论】:
-
@Kerrek For
t2也可以获取锁
标签: c++ multithreading boost-thread