我试图避免使用全局变量,因为我不知道代码将来需要如何扩展,所以我希望能够生成具有独立互斥锁的多个线程。我正在尝试将互斥锁和条件变量传递给类构造函数。
头文件:
class Receiver {
private:
std::mutex & _global_mtx;
std::condition_variable & _global_cv;
bool & state;
public:
// Construct
Receiver(std::mutex &, std::condition_variable &, bool &);
};
代码文件:
/*-------------------------------------
Construct
--------------------------------------*/
Receiver::Receiver(std::mutex & mtx, std::condition_variable & cv, bool & state){
_global_mtx = mtx;
}
这显然会导致问题,因为_global_mtx
它已经被声明为引用变量,所以我不确定如何将引用从mtx
to 传递给_global_mtx
.
另外,我知道在声明引用时必须为它分配一个值来引用(可能是 NULL),那么有没有更好的方法来处理我正在做的事情?我确定我不是第一个也是唯一一个遇到这种需求的人,但我不确定在哪里寻找答案。