2013-08-23 39 views
0

我想使用boost::thread類實現線程池。使用Boost :: thread類的線程池實現

我能夠使用下面的線創建線程。

boost::thread Consumer_1(consume); 

其中是線程和消耗是綁定到它的函數。

上面的語句一旦執行就會啓動線程。

現在我只想創建線程並執行綁定運行時。

我還沒有發現boost方法來延遲這種綁定。

任何人都可以幫忙嗎?

回答

1

綁定不能稍後完成。由於主要原因—一個執行線程必須執行一些東西。

你需要做的是創建一個函數,將採取的工作,表示爲boost::function,從隊列和執行它們。比在一個或多個線程中運行該函數。

我不知道有一個線程安全的隊列,但你總是可以使用普通std::dequeboost::condition_variable用於喚醒線程和boost::mutex用於鎖定雙端隊列。您可能還想看Boost.Asio。另見here

+1

+1用於暗示Asio。您可能不想在生產代碼中使用自己的線程池。如果有必要,‘在行動C++併發’的書,對話題一整章退房威廉姆斯,討論很多很多的東西,你可以做的不對。 – ComicSansMS