2012-03-27 58 views
22

在C++ 11中有沒有類似boost::thread_groupboost :: thread_group在C++ 11中?

我只是試圖將我的程序從使用boost:thread移植到C++ 11線程,並且無法找到任何等效的東西。

+4

升壓線程和C++ 11級的線程是不同的。我個人繼續使用boost線程,因爲更完整的API(以及缺乏當前實現的線程本地存儲)。 – 2012-03-27 17:07:28

回答

24

不,沒有什麼東西直接等同於C++ 11中的boost::thread_group。如果你想要的只是一個容器,你可以使用std::vector<std::thread>。然後,您可以使用新的for語法或std::for_each在每個元素上調用join(),或其他任何元素。

+4

自2012年以來,這個問題有更好的解決方案嗎? – pyCthon 2013-08-31 20:58:08

+1

我想補充一點,'boost :: thread_group'實際上沒有任何魔力,它比線程向量(「join_all」和「create_thread」之類的一些實用函數「稍多一些」)稍微多一點。 – 2016-01-17 13:45:48

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(); 
    } 
相關問題