Big*_*r00 1 c++ multithreading pthreads boost-thread c++11
b/w boost::thread、std::thread(C++11) 和pthread基于 Linux 的应用程序的高 CPU 吞吐量(读取:大量浮点运算)的权衡是什么?什么时候应该使用一种实现而不是其他实现?
这里的用例是在连续内存的缓冲区(或指向缓冲区的指针)上调用例程,做一些工作,然后返回——在多线程实现中。
std::thread
std::thread::native_handle.boost::thread
pthread:
什么时候应该使用一种实现而不是其他实现?
std::thread通常是一个很好的默认值。如果您需要pthread标准中没有的功能,您可以在 的帮助下使用它们std::thread::native_handle(对随之而来的可移植性有影响)。没有理由pthread在 C++ 中直接使用其他(我知道的)。
boost::thread 如果您需要古老的 pre-C++11 支持,可以使用它,以保持对其他系统的可移植性。
注意std::thread本身不需要直接使用。标准具有有用的抽象,例如std::reduce,std::packaged_task,std::async,用于并行执行策略算法等
唯一支持的标准是std::thread,如果您的构建工具允许 C++11 或更高版本,则应该使用它。它是 的派生但标准化版本boost::thread。
Pthreads 是特定于平台的线程实现,std::thread由 C++11 标准保证。通常在类似 POSIX 的系统上std::thread内部使用 pthreads。