7

显然我们仍然会维护它,但是一旦 C++ 标准保证,它会有多大用处。

随着新标准的出现,同步原语(互斥体、条件变量)怎么样?

你认为 pthread 比 std::thread 更难掌握吗?

4

7 回答 7

33

C不会消失。POSIX 不会消失。用 C 语言为 POSIX 编写的多线程代码不会消失。所以 pthreads 不会消失。

std::thread 的许多实现将在后台使用 pthread。

“Pthreads API 在 ANSI/IEEE POSIX 1003.1 - 1995 标准中定义。” -- POSIX 线程编程https://computing.llnl.gov/tutorials/pthreads/

于 2009-08-13T17:56:20.213 回答
12

POSIX 是一种操作系统标准。C++0X 是一种语言标准。在第二个中拥有线程不会使第一个过时。两者之间存在协作,因此第二个可以在第一个上实施。(还有一个为 POSIX 提供 C++ 接口的工作正在进行中)。

于 2009-08-13T17:57:27.963 回答
9

支持 pthread 的平台上的 C++ 实现可能会根据 pthread 实现语言特性——所以不,它不会过时。

于 2009-08-13T17:56:49.523 回答
4

std::thread 不支持优先级、控制线程堆栈的大小、控制调度策略或控制处理器亲和性。

调度类和优先级对于实时系统至关重要。处理器亲和力和堆栈大小对于高性能系统非常重要。此类应用程序将继续使用本机线程设施,可能除了 std::thread 之外,也可能代替 std::thread,可能通过提供所需功能的供应商扩展以及 std::thread。

于 2009-08-13T20:12:21.960 回答
1

不管技术比较如何,十年来最好的部分是从所有主要平台/供应商那里获得相当不错的 C++ 98 支持。仅此一项就确保了 pthreads 在 2020 年将变得强大。

于 2009-08-13T17:56:42.863 回答
0

也许对于新代码,使用标准中的内容将是正确的方法。我们将不得不等待,看看主要编译器中的实现有多可靠。但是从 pthread 转换现有代码不会有太多好处,假设它现在正在工作。这包括在已经拥有大量 pthread 经验的商店中编写的新代码。

于 2009-08-13T18:23:37.243 回答
0

至少对于 boost 线程是正确的:

  • 它不支持堆栈大小参数
  • 不支持setpshared属性

所以不......在操作系统 API 被认为过时之前,有一些事情要做。(顺便说一句,线程是通过 pthread 实现的)

于 2009-08-13T20:19:36.093 回答