POSIX线程的范围

时间:2010-10-18 04:36:31

标签: multithreading unix posix

我一直在学习Java中的线程编程,其中有用于线程管理的复杂API。我最近遇到了this。我很想知道现在是否使用过这些。 POSIX线程是否过时,或者它是现在用于C ++中的线程的标准。除了Java,我不熟悉任何其他语言的线程。

1 个答案:

答案 0 :(得分:0)

phtreads是当前标准的POSIX线程库。他们缺少一些重要的新事物,我希望他们会更新以适应他们。而C ++ 1x标准也将内置一些线程原语。

pthreads主要是缺少原子价值操作。例如,没有线程安全原语计数器操作,预计将编译为1-5个机器指令。

这些是必需的,因为虽然volatile关键字的语义似乎暗示您可以将其用于其中某些内容,但事实并非如此。现代CPU以一种经常导致写入读取和写入由不同CPU以不同顺序查看的方式管理其L1,L2和L3高速缓存。当前的优化编译器可以显着地重新排序操作,因此它们发生的顺序不再与它们在源代码中出现的顺序有很多相似之处。

Mutexes,即使是现代Linux版本,除非存在争用,否则会避免任何系统调用,对于像引用计数这样的东西来说太重了。

C和C ++可以改变,因此语言使这些保证始终发生。但这与他们“高层次集会”的精神背道而驰。