问题:是否初始化了pthread_mutex_t对象内核持久化? - 关注的是Linux V 2.6以后的版本。
动机:
如果持久化:对象资源将不会通过特定清理pthread_mutex_destroy
在实际编码术语中,这意味着互斥对象将在之后持续存在
除非pthread_mutex_destroy
,否则无需清理即可创建程序退出或中止
叫做。我有一个令人讨厌的控制程序常规删除的代码,
在尝试kill -9
(SIGTERM)之后使用kill -15
,SIGKILL。该设计
该程序不会改变,它是供应商代码。没有办法
改变它的基本行为。正确清理代码通常需要更长的时间
控制守护进程喜欢,所以'zap'就是这个过程。这经常发生。
https://www.kernel.org/doc/Documentation/mutex-design.txt 来自Ingo Molnar
[这是较旧的材料,表示'是',自旋锁是内核模式对象]
'struct mutex'是新的互斥锁类型,在include / linux / mutex.h和 在kernel / locking / mutex.c中实现。它是一个基于计数器的互斥锁 自旋锁和等待列表。计数器有3种状态:1表示“未锁定”,0表示 “锁定”和负数(通常为-1)表示“锁定的潜在服务员” 排队”。
http://man7.org/linux/man-pages/man2/execve.2.html有:
所以调用exec()之一,系列不是确定持久性的方法。
http://man7.org/linux/man-pages/man3/exit.3.html没有任何关于互斥锁的内容 方式或其他。
有人可以通过这种方式向我指出明确的代码或文档吗? 我需要用坚实的东西来面对我们的供应商。
答案 0 :(得分:2)
Linux中的Pthreads互斥体不是内核对象。 pthread_mutex_destroy
不进行任何系统调用,因为没有可用的内核资源。 strace
它自己看看。
Ingo Molnar的链接文档讨论了Linux内核内部的互斥体,而不是pthreads。他们是完全不同的野兽。