假设我们有一个使用静态初始化程序初始化的全局互斥量或rwlock:
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
要么
pthread_rwlock_t lock = PTHREAD_RWLOCK_INITIALIZER;
文档说等效于pthread_*_init
默认参数。
我们是否必须销毁以这种方式初始化的互斥锁或rwlock?
不能。静态分配的互斥锁和动态分配的互斥锁之间的区别基本上可以与位于堆栈或堆中的变量相比较。您不必退还没有动态分配的互斥量。引用Michael Kerrisk的“ Linux编程接口”:
当不再需要自动或动态分配的互斥锁时,应使用pthread_mutex_destroy()将其销毁。(不必在使用PTHREAD_MUTEX_INITIALIZER静态初始化的互斥锁上调用pthread_mutex_destroy()。)