2014-03-19 43 views
0

我需要在多核架構上執行大量相對較短的任務。 爲此,我想使用固定大小的線程池和執行程序的一些可靠實現。如何使用boost :: asio :: io_service在C++ 11線程之間發送作業

我在閱讀關於boost :: asio和io_service的這篇文章How to create a thread pool using boost in C++?,但它使用boost線程,而在很多地方我的代碼使用C++ 11的thread_local修飾符作爲局部變量(出於性能原因),因此我猜想我不得不使用C++ 11線程。

boost線程實現是否與C++ 11 thread_local變量兼容?

只用C++ 11線程使用io_service :: run方法,而不使用boost :: thread是否安全?

+0

線程局部變量應該是無關是正義的。線程本地人。只要它們的實現是正確的,Boost就不需要支持它們。 – sehe

回答

3

只使用io_service :: run方法與C++ 11線程,而不是boost :: thread是否安全?

是的,我用std::threadboost::asio,它工作正常。我也使用std::bind而不是boost::bind。你可以找到一個示例here

boost線程實現是否與C++ 11 thread_local變量兼容?

我不知道這事,但如果你使用std::thread

+0

我剛剛測試過,它確實有效,儘管當我意識到io_service :: stop()是如何工作時,我有一些生氣的時刻。 –

相關問題