c - pthread_mutex 和进程终止
问题描述
在使用 pthread_mutex_t 之前,应该调用 pthread_mutex_init(),在不再需要它之后,应该使用 pthread_mutex_destroy() 将其销毁。
我的问题是,如果我的进程在调用 pthread_mutex_destroy()(例如 SIGKILL、SIGINT 或 SIGABORT)之前终止会发生什么?是否有可能某些资源会泄漏?
同样的问题也适用于 pthread_cond_init/destroy。
解决方案
不在您可能使用的任何平台上。像互斥锁和条件变量这样的对象只是进程地址空间中的一块内存。当一个进程终止时,它的地址空间将不复存在。因此,任何资源都不可能泄漏。
进程共享资源更加复杂。虽然资源不会泄漏,但它们可能仍然存在,甚至可能仍在被其他进程使用。
推荐阅读
- python - 通过需要文件的 CGI 表单字段将文本传递给 python
- google-app-engine - 无法使用应用引擎 SDK 在 App Engine 上部署
- macros - 有条件地选择 SAS 数据步骤中的数据集
- javascript - 在滚动时交换图像
- html - 仅使用 CSS 避免多个粘性 div 相互重叠(无 javascript)
- c# - UseHsts 不适用于 NetCore 2.1 网站
- node.js - 为什么我可以在 MongoDB 中更新一个字段而不能更新另一个字段?(平均堆栈)
- c# - 将模式窗口中的内容保存为 SQL Server 表中的 varbinary
- tensorflow - cudnnLSTM 不会恢复为 cudnnCompatibleLSTM
- javascript - 遍历复杂的 JSON 以查找匹配并返回关联的数据