显然我们仍然会维护它,但是一旦C ++标准保证,它将是多么有用。
随着新标准的出现,同步原语(Mutex,条件变量)怎么样?
你认为pthread难以掌握而不是std :: thread吗?
答案 0 :(得分:30)
C不会消失。 POSIX不会消失。用C语言编写的用于POSIX的多线程代码不会消失。所以pthreads不会消失。
std :: thread的许多实现都将使用pthreads。
“Pthreads API在ANSI / IEEE POSIX 1003.1-1995标准中定义。” - POSIX线程编程https://computing.llnl.gov/tutorials/pthreads/
答案 1 :(得分:12)
POSIX是一种操作系统标准。 C ++ 0X是一种语言标准。在第二个中拥有线程不会淘汰第一个。两者之间存在合作,因此第二个可以实现。 (还有一些工作正在为POSIX提供C ++接口)。
答案 2 :(得分:9)
支持pthreads的平台上的C ++实现可能会在pthreads方面实现语言功能 - 所以不,它不会过时。
答案 3 :(得分:4)
std :: thread不包括对优先级的支持,控制线程堆栈的大小,控制调度策略或控制处理器关联。
调度类和优先级对于实时系统至关重要。处理器关联性和堆栈大小对于高性能系统非常重要。这样的应用程序将继续使用本机线程工具,可能除了std :: thread之外,可能代替std :: thread,可能通过供应商扩展来暴露所需的功能以及std :: thread。
答案 4 :(得分:0)
无论进行技术比较,都需要花费十年时间才能从所有主要平台/供应商那里获得合理合理体面的C ++ 98支持。仅这一点就确保了preadreads在2020年将会变得强劲。
答案 5 :(得分:0)
也许对于新代码,使用标准中的内容将是正确的方法。我们将不得不等待,看看主要编译器中的实现是多么可靠。但是假设它现在正在运行,从pthreads转换现有代码将没有多大好处。这包括在已经具有很多pthread经验的商店中编写的新代码。
答案 6 :(得分:0)
至少纠正提升线程:
setpshared
属性所以没有......在OS API被认为过时之前,有一些事情要做。 (BTW线程通过pthread实现)