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));
}
}
ref によって渡される必要があるため、スレッド作成 ( workers.push_back(thread(&ThreadFn, x));
)でコンパイル エラーが発生することを予期していました。x
正しい構文は次のようにする必要があります。
workers.push_back(thread(&ThreadFn, std::ref(x)));
もちろん、コードは正常にコンパイルされ、適切に動作します。を使用してVC11
います。これがフラグされていない理由は何ですか?