我编写了一些代码(在Linux下运行),它使用pthread强大的互斥锁进行死锁恢复。
在Centos 5下,互斥锁名称为PTHREAD_MUTEX_ROBUST_NP。但是在Fedora 16下,_NP后缀已被删除。
Posix标准不包括后缀。后缀是什么意思,什么时候删除,以及使用命名命名编译代码的正确方法是什么。
编辑:所以看来在后面的pthreads中删除了后缀。但是,定义_GNU_SOURCE会重新定义'_np'版本,因此源可以在任何一个版本下编译。答案 0 :(得分:2)
正如cnicutar已经建议的那样,_NP代表非便携式,并附加了想要添加标准中没有(或尚未)的功能的实现。该标准仅考虑包括在至少一个主要实现中实现的功能,并证明是有用的,并且使用现有标准功能无法实现。
Fedora通常使用比RHEL(或CentOS)更新版本的库,并且可能已经删除了_np,因为健康的互斥锁和相关的API已被接受到标准中。