Dai*_*vys 2 c++ argument-passing inline-functions stdthread
我想用lambda函数调用一个方法(对于这个例子std :: thread构造函数),传递int值:
int a=10;
std::thread _testThread = thread([a](int _a){
//do stuff using a or _a ?
});
_testThread.detach();
Run Code Online (Sandbox Code Playgroud)
我不知道如何正确编写这样的函数,我得到这个错误:C2064:term不计算为0参数的函数
std::thread获取可调用对象以及传递给它的任何参数.如果不提供参数,std::thread将尝试在没有参数的情况下调用该对象,因此会出错.
如果您需要参数:
std::thread _testThread{[a](int _a) {
std::cout << a << ' ' << _a; //prints main's a, followed by somethingThatWillBe_a
}, somethingThatWillBe_a};
Run Code Online (Sandbox Code Playgroud)
如果你只是想用main的a,它已经拍摄:
std::thread _testThread{[a] {
std::cout << a; //prints main's a
}};
Run Code Online (Sandbox Code Playgroud)
如果您认为需要分离线程,我还建议您非常小心.如果有可能加入线程,那就去吧.
| 归档时间: |
|
| 查看次数: |
8928 次 |
| 最近记录: |