1

我正在为pthreads我在并行性方面所做的一些工作寻找标准。我发现它应该是 IEEE 1003.1c“信息技术的 EEE 标准 - 可移植操作系统接口 (POSIX(R)) - 系统应用程序接口 (API) 修正案 2:线程扩展(C 语言)”。但是,当我谈到它时,它说该标准已被“取代”,但他们没有说什么(或者我没有看到他们在哪里说的)。有谁知道替代标准的链接?谢谢。

4

3 回答 3

5

它已被较新的版本(2008 年)取代。它以 IEEE 1003.1-2008 或 ISO/IEC 9945-2009(足够的钱)或The Open Group Single Unix Specification,第 7 版(免费)的形式提供。这三个都有相同的内容。

于 2012-09-13T23:11:30.747 回答
2

是的,那是一份非常古老的文件。您可能想要的是完整的POSIX 2008 规范

于 2012-09-13T23:11:22.870 回答
2

由于您在问题中标记了 Linux,我建议除了 Jerry Coffin 回答的内容之外,您还可以查看 Linux pthreads 手册页。当前的 Linux pthreads 实现 (NPTL) 并不完全符合 POSIX;有些小细节处理方式不同。

还有一些扩展,如__thread关键字(指定每个线程的变量,比pthread_key_create(); 在此处详细解释GCC)在 Linux 和其他操作系统中可用,并且可能在将来的某个时候包含在 POSIX 中.

如果您正在做对性能极为敏感的工作,我建议您还查看 GCC、ICC 和 Pathscale 编译器中可用的原子内置函数和向量扩展(GCC 向量扩展遗留__sync内置函数、C++11 风格的__atomic内置函数和x86 特定的内置函数)。虽然这些还没有标准化,但它们可以在上述编译器中使用,并且除了最近的内置函数之外__atomic,它们至少已经存在了十年。从个人经验来看,我可以证明这些设施可以显着提升性能(在我正在研究的经典分子动力学模拟器中约为 40%),同时仍然可以在非 Windows 系统和编译器之间移植。

于 2012-09-14T01:14:12.920 回答