jilles 在对 2010 年Unix 崩溃时自动释放互斥锁问题的评论中声称:
glibc 强大的互斥锁是如此之快,因为 glibc 采用了危险的捷径。当内核将其标记为“将导致 EOWNERDEAD”时,不能保证互斥锁仍然存在。如果互斥锁被销毁并且内存被内存映射文件替换,该文件恰好在正确的位置包含最后拥有线程的 ID,并且最后拥有线程在写入锁定字之后终止(但在从其列表中完全删除互斥锁之前)拥有的互斥体),文件已损坏。Solaris 和即将成为 FreeBSD9 的健壮互斥体较慢,因为它们不想冒这个风险。
我无法理解这种说法,因为销毁互斥锁是不合法的,除非它被解锁(因此不在任何线程的健壮列表中)。我也找不到任何搜索此类错误/问题的参考资料。这种说法是完全错误的吗?
我问并且我感兴趣的原因是,这与我自己基于相同 Linux 健壮互斥原语构建的实现的正确性有关。