我需要一個用於我的應用程序的線程池,並且我希望儘可能地依賴標準(C++ 11或boost)內容。我意識到有一個非官方的(!)boost線程池類,它基本上解決了我需要的東西,但是我寧願避免它,因爲它不在boost庫本身 - 爲什麼在它之後仍然不在覈心庫中很多年?boost線程池
在本頁和其他地方的一些帖子中,人們建議使用boost :: asio來實現類似於線程池的行爲。乍一看,這看起來像我想做的事情,但是我發現我看到的所有實現都無法加入當前活動的任務,這使得它對我的應用程序無用。爲了執行一個連接,他們向所有的線程發送停止信號並隨後加入它們。但是,這完全消除了我的用例中線程池的優點,因爲這使得新任務需要創建一個新線程。
我想要做的是:
ThreadPool pool(4);
for (...)
{
for (int i=0;i<something;i++)
pool.pushTask(...);
pool.join();
// do something with the results
}
任何人都可以提出一個解決方案(除了使用SourceForge上的現有非官方的線程池)?在C++ 11或核心提升中有什麼可以幫助我嗎?
你不想'boost :: threadpool'因爲它是非官方的? –