linux中的c++线程
C++ threading in linux
我正在尝试在Linux中创建一个多线程c++程序。我以前在windows上使用过pthreads库,但我听说它不是Linux的标准配置。你会建议c++和Linux使用什么线程库?有哪些选择,哪些是最常见的,哪些通常是最快的?谢谢!
编辑:我错误地认为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();
它很简单,对于大多数用途应该足够了(尽管取决于实现,它可能依赖于pthreads)。
如果没有,就使用pthreads,因为您熟悉它。它是POSIX标准的一部分,大多数Linux发行版都与POSIX标准兼容——至少,它们足够兼容,任何差异对您来说都无关紧要。
假设您没有做任何特别"windowsy"的事情,那么您使用pthreads的windows代码应该在Linux或任何其他形式的Unix上工作一样(只要它是相当现代的-例如自pthreads引入以来的最近10年左右)。
你当然也可以使用std::thread
,因为它是由c++ 11支持的,除非你有一个非常旧的g++版本,它应该提供你所需要的,一个面向对象的接口——再说一次,这应该在Windows和Linux上同样有效(当然,要有一个足够现代的编译器和标准库)。
相关文章:
- 从不同线程使用int64的不同字节安全吗
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 在C++中使用cURL和多线程
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 在cuda线程之间共享大量常量数据
- 如何将元素添加到数组的线程安全函数?
- 线程,如果else语句,都是错误的上下文切换后,会发生什么
- C++Boost Asio Pool线程,带有lambda函数和传递引用变量
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 异常属于C++中的线程还是进程
- C++中的线程安全删除
- C++使用params创建线程函数会导致转换错误
- 类与私有变量的其他类之间的线程安全性
- CoInitialize()在单独的线程上崩溃而不返回
- c++中的线程池
- 线程之间的布尔停止信号
- 为什么std::async使用同一个线程运行函数
- 用于矢量处理的多个线程
- C++为线程工作动态地分割例程
- 为什么我不能在 while 循环中创建线程?