2010-10-18 34 views
1

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

回答

0

phtreads是当前标准的POSIX线程库。他们错过了一些重要的新事物,我希望他们会被更新以适应他们。而且C++ 1x标准还将包含一些内置的线程原语。

pthreads大多缺少原子值操作。例如,没有线程安全的原始计数器操作,预计将被编译为1-5条机器指令。

这些都是需要的,因为尽管volatile关键字的语义似乎表明您可能能够将其用于某些这些事情,但事实并非如此。现代CPU以一种经常导致写入读写的方式管理它们的L1,L2和L3高速缓存,不同CPU的读写顺序不同。当前的优化编译器可以对操作进行重新排序,因此它们发生的顺序不再与它们在源代码中出现的顺序有很多相似之处。

Mutexes,即使是现代Linux版本,除非存在争用,它们都可以避免任何系统调用,但对于参考计数等重量来说太重了。

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