2012-03-27 18 views
22

C++ 11にboost::thread_groupのようなものはありますか?boost :: thread_group in C++ 11?

私のプログラムをboost:threadからC++ 11スレッドに移植するだけで、同等のものは見つかりませんでした。

+4

ブーストスレッドとC++ 11件のスレッドが異なります。私は個人的には、より完全なAPI(そして例えばスレッドローカルストレージの現在の実装の欠如)のために、ブーストスレッドを使用し続けます。 –

答えて

24

いいえ、C++ 11ではboost::thread_groupに直接相当するものはありません。必要なものがすべてコンテナであればstd::vector<std::thread>を使用できます。新しいforの構文またはstd::for_eachのいずれかを使用して、各要素のjoin()などを呼び出すことができます。

+4

2012年以降、この問題の改善策がありましたか? – pyCthon

+1

私は 'boost :: thread_group'にはまったく魔法がないことを付け加えたいと思います。これはスレッドのベクトルより少しだけです(少しだけ" join_all "や" create_thread'のようなユーティリティ関数です)。 –

5

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(); 
    } 
関連する問題