我有一个C++程序,它运行一堆线程来操作相同的数据.这些线程中的每一个都有一个指向正在被操纵的对象的指针,例如:
thread1和thread2都有一个指向object1的指针
object1-> addSomething()可以被thread1或2使用并引用同一个对象
现在,如果两个线程在同一时刻完成这些操作可能会给它们带来一些麻烦,所以我想要一个简单的阻塞机制.我想要的只是这个:
void method()
{
waitUntilFree()
blockForOthers()
doSomething()
unblock()
}
Run Code Online (Sandbox Code Playgroud)
有一个简单的方法吗?我只是想阻止并等到它是免费的.我不介意线程可能需要等待一段时间.有一个简单的机制来做到这一点?我使用Boost来处理这些线程,但我不能为我的生活找到一种方法来做这个(似乎很简单的)简单的块等待事情.
正如费鲁乔指出你可以使用一个互斥像Boost.Mutex从同步的相同库:
class X {
boost::mutex m_mutex;
public:
void method() {
boost::mutex::scoped_lock lock(m_mutex);
// ... now locked, do stuff
} // mutex automatically unlocked when scoped_lock is destructed
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3378 次 |
| 最近记录: |