C++线程和简单的阻塞机制?

1 c++ multithreading blocking

我有一个C++程序,它运行一堆线程来操作相同的数据.这些线程中的每一个都有一个指向正在被操纵的对象的指针,例如:

thread1和thread2都有一个指向object1的指针
object1-> addSomething()可以被thread1或2使用并引用同一个对象

现在,如果两个线程在同一时刻完成这些操作可能会给它们带来一些麻烦,所以我想要一个简单的阻塞机制.我想要的只是这个:

void method()
{
  waitUntilFree()
  blockForOthers()
  doSomething()
  unblock()
}
Run Code Online (Sandbox Code Playgroud)

有一个简单的方法吗?我只是想阻止并等到它是免费的.我不介意线程可能需要等待一段时间.有一个简单的机制来做到这一点?我使用Boost来处理这些线程,但我不能为我的生活找到一种方法来做这个(似乎很简单的)简单的块等待事情.

Geo*_*che 5

正如费鲁乔指出你可以使用一个互斥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)