C++11 及以上版本中 std::thread 相对于 pthread 的优势[重复]

问题描述 投票:0回答:1

我见过使用

pthread
在 C++11(或更高版本)中编写多线程程序的代码以及使用
std::thread
库的其他代码。使用
std::thread
库代替
pthread
有什么优势?

c++ multithreading c++11 pthreads std
1个回答
17
投票

有多种优点。列出这些,不一定按照重要性顺序。

  1. 它是跨平台的。例如,默认情况下,pthreads 库在 Windows 上不可用。使用线程保证将使用可用的实现。
  2. C++ 线程强制执行正确的行为。例如,尝试破坏未加入、未分离线程的句柄会导致程序中止。这是一件非常好的事情,因为它让人们意识到他们在做什么。
  3. C++ 线程作为一种语言完全融入到 C++ 中。您不再需要在某种结构中分配参数并将该结构的地址作为 void* 传递给您的 pthread 例程。通过使用可变参数模板,C++ 线程库允许您向线程启动例程提供任意数量的参数,并为您进行类型检查。
  4. C++ 线程有一组很好的周围类,例如 Promise。现在您实际上可以从线程中抛出异常,而不会导致整个程序崩溃!
© www.soinside.com 2019 - 2024. All rights reserved.