Linux中的C ++线程
我试图在Linux中创建一个多线程的c ++程序。 我之前在windows上使用过pthreads库,但是我听说它不是Linux的标准。 你会为Linux提供c ++的线程库吗? 有哪些选择,哪些是最常见的,哪些是最快的? 谢谢!
编辑:我误解了pthreads不是Linux本地的,正如我所说的,这是我之前听到的。 我主要是在寻找各种线程选项的效率之间的比较,并且对c-11线程库如何执行与我之前使用的pthreads有关的信息特别好奇。 我被误导了,我发布了这个问题以获得更多信息。 没有必要讨厌。
如果你使用C ++ 11,只需使用std::thread
。 这样做相当简单。 例如:
#include <thread>
void thread_entry(int foo, int bar)
{
int result = foo + bar;
// Do something with that, I guess
}
// Elsewhere in some part of the galaxy
std::thread thread(thread_entry, 5, 10);
// And probably
thread.detach();
// Or
std::thread(thread_entry).detach();
这很简单,应该足以满足大多数目的(尽管取决于实现,它可能取决于pthread)。
如果没有,只需使用pthreads,因为你熟悉它。 它是POSIX标准的一部分,大多数Linux发行版都基本符合 - 至少,它们足够合规,以至于任何差异都不会对您造成影响。
假设你没有做任何特别的“windowsy”工作,你的使用pthread的windows代码应该在Linux或任何其他形式的Unix上工作,只要它相当现代化 - 就像pthreads引入后10年左右一样)。
你当然也可以使用std::thread
,因为这是C ++ 11支持的,除非你有一个非常旧的g ++版本,它应该提供你所需要的,以及一个面向对象的接口 - 同样,这应该在Windows和Linux上平等地工作(当然,有足够的现代编译器和标准库)。
下一篇: threaded and multi