pthread_mutex 和进程终止
pthread_mutex and process termination
在使用 pthread_mutex_t 之前,应调用 pthread_mutex_init(),在不再需要它后,应使用 pthread_mutex_destroy() 将其销毁。
我的问题是,如果我的进程在调用 pthread_mutex_destroy() 之前终止,例如 SIGKILL、SIGINT 或 SIGABORT,会发生什么情况?是否有可能某些资源会泄漏?
pthread_cond_init/destroy 也有同样的问题。
不在您可能使用的任何平台上。互斥锁和条件变量等对象只是进程地址 space 中的内存块。当进程终止时,其地址 space 不复存在。所以不可能有任何资源泄露。
进程共享资源更复杂。虽然资源不会泄漏,但它们可能仍然存在,甚至可能仍在被其他进程使用。
在使用 pthread_mutex_t 之前,应调用 pthread_mutex_init(),在不再需要它后,应使用 pthread_mutex_destroy() 将其销毁。
我的问题是,如果我的进程在调用 pthread_mutex_destroy() 之前终止,例如 SIGKILL、SIGINT 或 SIGABORT,会发生什么情况?是否有可能某些资源会泄漏?
pthread_cond_init/destroy 也有同样的问题。
不在您可能使用的任何平台上。互斥锁和条件变量等对象只是进程地址 space 中的内存块。当进程终止时,其地址 space 不复存在。所以不可能有任何资源泄露。
进程共享资源更复杂。虽然资源不会泄漏,但它们可能仍然存在,甚至可能仍在被其他进程使用。