gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 10:35:53 24 4
gpt4 key购买 nike

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

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

现在,如果两个线程同时执行这些操作可能会带来一些麻烦,所以我想要一个简单的阻塞机制。我想要的只是这个:

void method()
{
waitUntilFree()
blockForOthers()
doSomething()
unblock()
}

有没有简单的方法来做到这一点?我只想阻止并等待它免费。我不介意线程可能需要等待一段时间。有没有一种简单的机制可以做到这一点?我将 Boost 用于这些线程,但我终其一生都想不出一种方法来执行这种(看似)简单的阻塞等待操作。

最佳答案

如 Ferruccio 所述,您可以使用 Mutex喜欢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
};

关于C++线程和简单的阻塞机制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3666753/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com