gpt4 book ai didi

c++ - 为什么不能将互斥量传递给线程?

转载 作者:可可西里 更新时间:2023-11-01 15:05:27 25 4
gpt4 key购买 nike

将互斥量引用传递给线程会导致编译错误。为什么不可能(我有多个线程使用同一个共享变量),我该如何解决?

#include<iostream>
#include<thread>
#include<mutex>

void myf(std::mutex& mtx)
{
while(true)
{
// lock
// do something
// unlock
}
}


int main(int argc, char** argv)
{
std::mutex mtx;

std::thread t(myf, mtx);

t.join();
return 0;
}

最佳答案

thread复制它的参数:

First the constructor copies/moves all arguments...

std::mutex 不可复制,因此会出现错误。如果你想通过引用传递它,你需要使用 std::ref :

std::thread t(myf, std::ref(mtx));

Demo

关于c++ - 为什么不能将互斥量传递给线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31307416/

25 4 0