[英]boost::thread vs std::thread vs pthread
b/w boost::thread
、 std::thread
(C++11) 和pthread
對於高 CPU 吞吐量(讀取:大量浮點運算)基於 Linux 的應用程序的權衡是什么? 什么時候應該使用一種實現而不是其他實現?
這里的用例是在連續內存的緩沖區(或指向緩沖區的指針)上調用例程,做一些工作,然后返回——在多線程實現中。
std::thread
std::thread::native_handle
。boost::thread
pthread
:
什么時候應該使用一種實現而不是其他實現?
std::thread
通常是一個很好的默認值。 如果您需要標准中沒有的pthread
功能,您可以在std::thread::native_handle
的幫助下使用它們(這會影響隨之而來的可移植性)。 沒有理由在 C++ 中直接使用pthread
(據我所知)。
如果您需要古老的 pre-C++11 支持,可以使用boost::thread
,以保持對其他系統的可移植性。
請注意, std::thread
本身不需要直接使用。 該標准具有有用的抽象,例如std::reduce
、 std::packaged_task
、 std::async
、算法的並行執行策略等。
唯一受標准支持的是std::thread
,如果您的構建工具允許 C++11 或更高版本,您應該使用它。 它是boost::thread
的派生但標准化版本。
Pthreads 是特定於平台的線程實現, std::thread
由 C++11 標准保證。 通常在像 POSIX 這樣的系統上std::thread
內部使用 pthreads。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.