c - 销毁静态互斥体和 rwlock 初始值设定项

标签 c pthreads posix

假设我们有一个用静态初始化器初始化的全局互斥锁或 rwlock:

pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;

pthread_rwlock_t lock = PTHREAD_RWLOCK_INITIALIZER;

文档说它等同于带有默认参数的 pthread_*_init

我们是否必须销毁以这种方式初始化的互斥锁或 rwlock?

最佳答案

没有。静态分配和动态分配的互斥量之间的区别基本上类似于位于堆栈或堆中的变量。您不必归还不是动态分配的互斥量。 引自 Michael Kerrisk 的“The Linux Programming Interface”:

When an automatically or dynamically allocated mutex is no longer required, it should be destroyed using pthread_mutex_destroy(). (It is not necessary to call pthread_mutex_destroy() on a mutex that was statically initialized using PTHREAD_MUTEX_INITIALIZER.)

关于c - 销毁静态互斥体和 rwlock 初始值设定项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29295021/

相关文章:

c - C 中的星号空格 - 额外的空格是什么意思?

c - 编译时出错

posix - 进程间快速同步方法

c - 如何使用 rand_r 生成 -1 到 1 之间的随机数

c - 使用未声明的标识符 'PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP'

c - MessageQueue 名称和消息队列大小

linux - 我可以分配一个大的和保证连续范围的物理内存(100MB)吗?

c - 字符设备与终端设备与流之间的区别

c - 链式赋值和隐式转换的优先级

c - 查找哪条指令在 Cortex M3 上导致了陷阱