我正在尝试用Linux创建一个多线程的c++程序。我以前在windows上用过pthread库,但我听说它不是Linux的标准。你对Linux下的c++有什么线程库的建议?有哪些选项,最常见的是什么,通常最快的是什么?谢谢!
编辑:我错误地认为pthread不是linux原生的,正如我所说的,这是我不久前听到的。我主要在寻找各种线程选项的效率之间的比较,特别好奇的是关于c-11线程库与我以前使用的pthread的性能的信息。我被误导了,所以我发布了这个问题以获得更多的信息。没必要这么下流。
发布于 2013-06-09 06:21:13
如果你使用的是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)。
如果不是,那就使用pthread,因为您对它很熟悉。它是POSIX标准的一部分,大多数Linux发行版基本上都符合POSIX标准--至少,它们是完全兼容的,任何差异对您来说都无关紧要。
发布于 2013-06-09 06:22:45
假设你没有做任何特别"windowsy“的事情,你使用pthread的windows代码应该可以在Linux或任何其他形式的Unix上正常工作(只要它是相当现代的--就像过去10年左右pthread被引入以来一样)。
当然,你也可以使用std::thread,因为它是由C++11支持的,除非你有一个非常旧的g++版本,否则它应该提供你需要的东西,具有面向对象的接口-同样,这应该同样适用于Windows和Linux (当然,受具有足够现代的编译器和标准库的约束)。
https://stackoverflow.com/questions/17004290
复制相似问题