C++ 11にboost::thread_group
のようなものはありますか?boost :: thread_group in C++ 11?
私のプログラムをboost:thread
からC++ 11スレッドに移植するだけで、同等のものは見つかりませんでした。
C++ 11にboost::thread_group
のようなものはありますか?boost :: thread_group in C++ 11?
私のプログラムをboost:thread
からC++ 11スレッドに移植するだけで、同等のものは見つかりませんでした。
いいえ、C++ 11ではboost::thread_group
に直接相当するものはありません。必要なものがすべてコンテナであればstd::vector<std::thread>
を使用できます。新しいfor
の構文またはstd::for_each
のいずれかを使用して、各要素のjoin()
などを呼び出すことができます。
2012年以降、この問題の改善策がありましたか? – pyCthon
私は 'boost :: thread_group'にはまったく魔法がないことを付け加えたいと思います。これはスレッドのベクトルより少しだけです(少しだけ" join_all "や" create_thread'のようなユーティリティ関数です)。 –
thread_group
は、C++ 11とC++ 14の標準にはなりませんでした。
しかし、回避策は単純です:
std::vector<std::thread> grp;
// to create threads
grp.emplace_back(functor); // pass in the argument of std::thread()
void join_all() {
for (auto& thread : grp)
if (thread.joinable())
thread.join();
}
ブーストスレッドとC++ 11件のスレッドが異なります。私は個人的には、より完全なAPI(そして例えばスレッドローカルストレージの現在の実装の欠如)のために、ブーストスレッドを使用し続けます。 –