PTHREAD_MUTEX_ROBUST 与 PTHREAD_MUTEX_ROBUST_NP

krb*_*oc1 5 pthreads

我编写了一些代码(在 Linux 下运行),它们使用 pthread 强大的互斥体进行死锁恢复。

在 Centos 5 下,互斥体属性名称为 PTHREAD_MUTEX_ROBUST_NP。然而,在 Fedora 16 中,_NP 后缀已被删除。

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

编辑:看来在后面的 pthread 中后缀已被删除。但是,定义 _GNU_SOURCE 会重新定义“_np”版本,以便源可以在任一版本下进行编译。

小智 3

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

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