Bob*_*Bob 11 c++ multithreading mutex
将互斥引用传递给线程会导致编译错误.为什么不可能(我有多个线程使用相同的共享变量),我该如何解决?
#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;
}
Run Code Online (Sandbox Code Playgroud)
Bar*_*rry 17
thread 复制其论点:
首先,构造函数复制/移动所有参数......
std::mutex不可复制,因此错误.如果您想通过引用传递它,您需要使用std::ref:
std::thread t(myf, std::ref(mtx));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4338 次 |
| 最近记录: |