void ThreadFn(int& i)
{
cout<<"Hi from thread "<<i<<endl;
}
int x = 0;
void CreateThreads(vector<thread>& workers)
{
for(int i = 0; i< 10; i++)
{
workers.push_back(thread(&ThreadFn, x));
}
}
我期待线程创建(workers.push_back(thread(&ThreadFn, x));
)中出现编译错误,因为x
应该由 ref 传递。我虽然正确的语法应该是:
workers.push_back(thread(&ThreadFn, std::ref(x)));
当然,代码编译得很好,也表现得很好。我正在使用VC11
. 知道为什么这没有被标记吗?