4

我编写了一些代码(在 Linux 下运行)使用 pthread 健壮的互斥锁进行死锁恢复。

在 Centos 5 下,互斥属性名称是 PTHREAD_MUTEX_ROBUST_NP。但是在 Fedora 16 下,_NP 后缀已被删除。

Posix 标准不包括后缀。后缀是什么意思,什么时候被删除,以及使用任一功能命名来编译代码的正确方法是什么。

编辑:所以看起来在后面的 pthreads 中删除了后缀。但是,定义 _GNU_SOURCE 会重新定义 '_np' 版本,因此源代码可以在任一版本下编译。

4

1 回答 1

3

正如 cnicutar 已经建议的那样,_NP 代表不可移植,并由想要添加标准中没有(或尚未)的功能的实现附加。该标准将仅考虑包括在至少一个主要实现中实现并证明是有用的并且使用现有标准功能无法轻易实现的功能。

Fedora 通常使用比 RHEL(或 CentOS)更新的库版本,并且可能删除了 _np,因为强大的互斥锁和相关的 API 已被接受为标准。

于 2012-08-29T01:57:12.933 回答