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上平等地工作(当然,有足够的现代编译器和标准库)。

链接地址: http://www.djcxy.com/p/40335.html

上一篇: C++ threading in linux

下一篇: threaded and multi