我正在寻找pthreads
标准,用于我在并行方面所做的一些工作。我发现它应该是IEEE 1003.1c“EEE标准信息技术 - 便携式操作系统接口(POSIX(R)) - 系统应用程序接口(API)修正2:线程扩展(C语言)”。但是,当I get to it时,它表示该标准已被“取代”,但他们没有说出什么(或者我没有看到他们说的地方)。有谁知道取代标准的链接?感谢。
答案 0 :(得分:5)
它已被新版本(2008)取代。它可用作IEEE 1003.1-2008或ISO / IEC 9945-2009(足够的钱)或The Open Group Single Unix Specification, version 7(免费)。这三个都有相同的内容。
答案 1 :(得分:2)
是的,这是一份非常古老的文件。你可能想要的是完整的POSIX 2008 spec。
答案 2 :(得分:2)
由于您在问题中标记了Linux,我建议除了Jerry Coffin所回答的内容之外,还要看看Linux pthreads man page。当前的Linux pthreads实现(NPTL)并不完全符合POSIX;有些细节处理不同。
还有一些扩展,例如__thread
关键字(用于指定每个线程变量,比pthread_key_create()
简单得多;详细解释为GCC here),可在Linux和其他操作系统中使用系统,并且可能在将来某个时候包含在POSIX中。
如果您正在执行对性能非常敏感的工作,我建议您还查看GCC,ICC和Pathscale编译器中提供的原子内置函数和向量扩展(GCC vector extensions,legacy __sync
builtins,{ {3}}和C++11-style __atomic
builtins)。虽然这些尚未标准化,但它们可以在上述编译器中使用,除了最近的__atomic
内置函数之外,它们至少可以使用十年。根据个人经验,我可以证明这些设施可以提供显着的性能提升(在我正在研究的经典分子动力学模拟器中约为40%),同时仍然可以在非Windows系统和编译器之间移植。