私はC++ 11コードで複数のスレッドを実行しており、スレッド本体は以下のようにラムダ関数を使って定義されています。C++で外部からスレッドを終了する
// make connection to each device in a separate child thread
std::vector<std::thread> workers;
for(int ii = 0; ii < numDev; ii++)
{
workers.push_back(std::thread([=]() { // pass by value
// thread body
}));
}
// detach from all threads
std::for_each(workers.begin(), workers.end(), [](std::thread &t) {
t.detach();
});
// killing one of the threads here?
私はすべての子スレッドから切り離しましたが、それぞれの子スレッドを従業員ベクトルで参照しました。どのように私のコードで後でスレッドのいずれかを殺すことができますか?
投稿hereは、std::terminate()
を使用していますが、私の場合は使用していないと思います。
[C++ 11でスレッドを終了するにはどうすればいいですか?](http://stackoverflow.com/questions/12207684/how-do-i-terminate-a-thread-in-c11) –
あなたが非協力的にスレッドを殺すと、どのようにあなたのプログラムについて何らかの保証を与えることができますか? – imreal