我正在为我正在做的一些关于并行性的工作寻找pthreads标准。我发现它应该是IEEE 1003.1c "EEE信息技术标准-可移植操作系统接口(POSIX(R)) -系统应用程序接口(API)修正案2:线程扩展(C语言)“。然而,当I get to it时,它说该标准已经被“取代”,但他们没有说是什么(或者我没有看到他们在哪里说的)。有人知道替代标准的链接吗?谢谢。
发布于 2012-09-14 07:11:31
它已经被较新的版本(2008)所取代。它的版本是IEEE2008ISO/IEC99452009(有足够的钱)或者The Open Group Single Unix Specification, version 7 (免费)。这三个都有相同的内容。
发布于 2012-09-14 07:11:23
是的,那是一份非常古老的文件。您可能需要的是完整的POSIX 2008 spec。
发布于 2012-09-14 09:14:13
由于您在问题中添加了Linux标签,因此我建议您除了看曾傑瑞回答的内容之外,还可以查看Linux pthreads man page。当前的Linux pthread实现(NPTL)并不完全符合POSIX;有一些小细节的处理方式有所不同。
还有像__thread关键字这样的扩展(用来指定每个线程的变量,比pthread_key_create()简单得多;详细解释用于GCC here),这些扩展可以在Linux和其他操作系统中使用,并且很可能在将来的某个时候包含在POSIX中。
如果您正在做非常注重性能的工作,我建议您还可以查看一下在GCC、ICC和Pathscale编译器(GCC vector extensions、legacy __sync builtins、C++11-style __atomic builtins和x86-specific builtins)中可用的原子内置和向量扩展。虽然这些还没有标准化,但它们可以在前面提到的编译器中使用,除了最近的__atomic内置,已经可以使用至少十年了。根据个人经验,我可以证明这些工具可以提供显著的性能提升(在我正在开发的经典分子动力学模拟器中~40%),同时仍然可以在非Windows系统和编译器之间移植。
https://stackoverflow.com/questions/12416012
复制相似问题