gpt4 book ai didi

c++ - 将互斥锁引用从 main 传递到类

转载 作者:搜寻专家 更新时间:2023-10-31 00:52:07 24 4
gpt4 key购买 nike

我需要在主函数和类实例中使用相同的 mutexunique_lock。但是,我无法将 mutex/unique_lock 地址分配给类成员变量(即 mutex&)。

这是我的:

Worker.h

class Worker 
{
private:

std::mutex &m_mu;
std::unique_lock<std::mutex> &locker;

public:

void start(std::mutex &mu, std::unique_lock<std::mutex> &locker);

};

Worker.cpp

void Worker::start(std::mutex &mu, std::unique_lock<std::mutex> &locker)
{
this->mu = mu; // error
this->locker = locker; // error
}

我试着做 this->mu(mu);但这也不管用。我可以做些什么来完成这项工作吗?

谢谢。

最佳答案

您需要在构建类时传递互斥量引用。

Worker::Worker(std::mutex &mu, std::unique_lock<std::mutex> &locker)
:m_mu(mu), locker(locker)
{}

这是唯一可以初始化引用的地方。一旦构建完成,您就无法更改它引用的内容。

为什么需要储物柜?互斥量进行同步,锁只是一个 RAII 对象,以便于获取互斥量。

关于c++ - 将互斥锁引用从 main 传递到类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52858761/

24 4 0