gpt4 book ai didi

c - 初始化的 pthread_mutex_t 对象是否内核持久?

转载 作者:太空宇宙 更新时间:2023-11-04 02:52:58 25 4
gpt4 key购买 nike

问题:初始化的 pthread_mutex_t 对象是否内核持久化?-- 关注的是 Linux V 2.6 以后的版本。

动机:如果持久化:对象资源将不会随着特定的清理而释放,pthread_mutex_destroy

在实际的编码术语中,这意味着互斥对象将在创建程序退出或中止而不进行清理,除非 pthread_mutex_destroy叫做。我的代码经常被讨厌的控制程序删除,在尝试 kill -15 (SIGTERM) 之后使用 kill -9,SIGKILL。该设计该程序不会更改,它是供应商代码。没有办法改变其基本行为。正确清理代码通常比control daemon 喜欢,所以 'zap' 进入这个过程。这种情况经常发生。

https://www.kernel.org/doc/Documentation/mutex-design.txt来自 Ingo Molnar

[这是说"is"的旧 Material ,自旋锁是内核模式对象]

'struct mutex' 是新的互斥类型,定义在 include/linux/mutex.h 和在 kernel/locking/mutex.c 中实现。它是一个基于计数器的互斥量自旋锁和等待列表。计数器有 3 种状态:1 表示“解锁”,0 表示“锁定”和“锁定的潜在服务员”的负数(通常为 -1)排队”。

http://man7.org/linux/man-pages/man2/execve.2.html有:

  • 调用线程以外的所有线程在调用期间被销毁 执行()。互斥量、条件变量和其他 pthread 对象不会被保留。

因此调用 exec() 家族中的一个并不是确定持久性的方法。

http://man7.org/linux/man-pages/man3/exit.3.html与互斥量一无所知方式或其他方式。

有人能以某种方式向我指出确定的代码或文档吗?我需要用一些可靠的东西来质问我们的供应商。

最佳答案

Linux 中的 Pthreads 互斥量不是内核对象。 pthread_mutex_destroy 不进行任何系统调用,因为没有内核资源可供释放。 strace 它并亲自查看。

Ingo Molnar 的链接文档讨论了 Linux 内核内部的互斥体,而不是 pthreads。它们是完全不同的野兽。

关于c - 初始化的 pthread_mutex_t 对象是否内核持久?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20254569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com