3

我正在尝试在 Linux 中创建一个多线程 c++ 程序。我以前在 Windows 上使用过 pthreads 库,但我听说它不是 Linux 的标准。对于带有 Linux 的 c++,您建议使用什么线程库?有哪些选择,最常见的是什么,通常最快的是什么?谢谢!

编辑:我误认为 pthreads 不是 linux 原生的,正如我所说,这是我不久前听到的。我主要是在寻找各种线程选项的效率之间的比较,并且对 c-11 线程库与我之前使用的 pthreads 的执行情况特别感兴趣。我被误导了,我发布了这个问题以获得更多信息。没必要恶心。

4

2 回答 2

5

如果您使用的是 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();

它很简单,应该足以满足大多数目的(尽管取决于实现,它可能取决于 pthreads)。

如果没有,只需使用 pthreads,因为您熟悉它。它是 POSIX 标准的一部分,大多数 Linux 发行版大多都符合该标准——至少,它们足够兼容,任何差异对你来说都无关紧要。

于 2013-06-08T22:21:12.570 回答
2

假设你没有做任何特别“windowsy”的事情,你使用 pthreads 的 windows 代码应该在 Linux 或任何其他形式的 Unix 上工作相同(只要它是相当现代的——就像从 pthreads 被引入以来的过去 10 年左右一样) )。

当然,您也可以使用std::thread, 因为它受 C++11 支持,除非您有一个非常旧的 g++ 版本,否则它应该提供您需要的东西,以及一个面向对象的接口 - 再次,这应该适用Windows 和 Linux 平等(当然,前提是拥有足够现代的编译器和标准库)。

于 2013-06-08T22:22:45.273 回答