boost::thread 对比 std::thread 对比 pthread
boost::thread vs std::thread vs pthread
b/w boost::thread
、std::thread
(C++11) 和 pthread
对高 CPU 吞吐量的权衡是什么(阅读:很多浮点运算)Linux 的应用程序?什么时候应该使用一种实现而不是其他实现?
这里的用例是在连续内存的缓冲区(或指向缓冲区的指针)上调用例程,做一些工作,然后 return -- 在多线程实现中。
唯一的 standard-supported 是 std::thread
,如果您的构建工具允许 C++11 或更高版本,您应该使用它。它是 boost::thread
.
的派生但标准化版本
Pthreads 是线程的 platform-specific 实现,std::thread
由 C++11 标准保证。通常在 POSIX 类似的系统上 std::thread
在内部使用 pthreads。
std::thread
- Pro:是标准的;保证在所有符合标准的平台上。
- 缺点:需要 C++11,因此不能与 Ancient 一起使用。编译器。只有基本的、最低的公分母特征。但是,仍然可以通过
std::thread::native_handle
. 使用平台特定的功能
boost::thread
- Pro:是跨平台的,受古代编译器支持。
- 缺点:不标准;需要外部依赖。与标准线程相似的功能集。
pthread
:
- 专业版:具有更多功能,例如调度策略。
- 缺点:仅在 POSIX 系统上存在,不包括 Windows。 Non-RAII界面。
When should one implementation be used over the others?
std::thread
通常是一个很好的默认值。如果您需要标准中没有的 pthread
功能,您可以在 std::thread::native_handle
的帮助下使用它们(对随之而来的可移植性有影响)。没有理由在 C++ 中直接使用 pthread
否则(据我所知)。
如果您需要古老的 pre-C++11 支持,可以使用 boost::thread
,以保持对其他系统的可移植性。
注意std::thread
本身不需要直接使用。该标准具有有用的抽象,例如 std::reduce
、std::packaged_task
、std::async
、算法的并行执行策略等
b/w boost::thread
、std::thread
(C++11) 和 pthread
对高 CPU 吞吐量的权衡是什么(阅读:很多浮点运算)Linux 的应用程序?什么时候应该使用一种实现而不是其他实现?
这里的用例是在连续内存的缓冲区(或指向缓冲区的指针)上调用例程,做一些工作,然后 return -- 在多线程实现中。
唯一的 standard-supported 是 std::thread
,如果您的构建工具允许 C++11 或更高版本,您应该使用它。它是 boost::thread
.
Pthreads 是线程的 platform-specific 实现,std::thread
由 C++11 标准保证。通常在 POSIX 类似的系统上 std::thread
在内部使用 pthreads。
std::thread
- Pro:是标准的;保证在所有符合标准的平台上。
- 缺点:需要 C++11,因此不能与 Ancient 一起使用。编译器。只有基本的、最低的公分母特征。但是,仍然可以通过
std::thread::native_handle
. 使用平台特定的功能
boost::thread
- Pro:是跨平台的,受古代编译器支持。
- 缺点:不标准;需要外部依赖。与标准线程相似的功能集。
pthread
:- 专业版:具有更多功能,例如调度策略。
- 缺点:仅在 POSIX 系统上存在,不包括 Windows。 Non-RAII界面。
When should one implementation be used over the others?
std::thread
通常是一个很好的默认值。如果您需要标准中没有的 pthread
功能,您可以在 std::thread::native_handle
的帮助下使用它们(对随之而来的可移植性有影响)。没有理由在 C++ 中直接使用 pthread
否则(据我所知)。
boost::thread
,以保持对其他系统的可移植性。
注意std::thread
本身不需要直接使用。该标准具有有用的抽象,例如 std::reduce
、std::packaged_task
、std::async
、算法的并行执行策略等