C++中std::thread相对于pthread的优势

10

我看到有些代码使用pthread来编写C++多线程程序,还有一些代码使用std::thread库。相比于pthread,使用thread库的优势是什么?

1个回答

16

有多个优点。 不一定按重要性顺序列出以下内容。

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

@SergeyA 作为一个新手 C++ 用户,我应该完全接受它,还是应该通过学习 pthreads 这个指针系统的痛苦?这值得我花时间去学吗?或者只是浪费时间?(在课堂上,学习时间有限...) - Chris
3
@bordeo,我不赞成提供如此广泛的建议。我认为,在C++中,指向函数的指针仍然是相关的,但显然它越来越不受青睐,并且被弃用了。我认为,学习它,了解它的工作原理,但永远不要使用它 :) - SergeyA

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接