通过设置互斥的process-shared
属性(pthread_mutexattr_setpshared),它允许一个互斥存在超出创建它的过程的寿命,根据该联机帮助页pthread_mutexattr_init:并行线程mutexattr进程共享的存储器泄漏
特别是,这些过程可能存在于初始化过程的整个生命周期之外。
所以,如果我创建了多个进程可以访问mmap(2)
d文件中互斥,那么我unlink(2)
的文件,会导致内核持久内存泄漏?如果是这样,那么僵尸互斥数据究竟来自实现的观点?
您提供的代码是用于'pthre ad_mutexattr_destroy'只支持_mutexattr_,而不是_mutex_本身。 [pthread_mutex_destroy](http://code.metager.de/source/xref/gnu/glibc/nptl/pthread_mutex_destroy.c)的源代码看起来很像NOP-ish,但是确实不知道。 –
你的问题是关于mutexattr和错误的手册页。 mutex_destroy http://code.metager.de/source/xref/gnu/glibc/nptl/pthread_mutex_destroy.c包含:stap probe(跟踪工具stap的入口; nop如果没有跟踪正在运行),检查互斥使用计数器对于某些类型的互斥体,并将互斥体类型重置为不正确的类型。因此,NPTL中的互斥量也没有额外的内存;它不需要释放内核内存。在glibc的NPTL中,mutex和mutexattr都是无泄漏的。 – osgx