我想问一下
pthread_mutex_t
的正确用法。
我知道您可以使用
pthread_mutex_init
函数进行初始化,也可以将其设置为 PTHREAD_MUTEX_INITIALIZER
并且 pthread_mutex_destroy
“破坏”互斥量。
我想知道是否可以不打电话
pthread_mutex_destroy
,在什么情况下有必要?我在这里找到了规范:here.
这是我的具体用例:
struct entries;
struct hash_table {
struct hash_table_entry entries[HASH_TABLE_CAPACITY];
pthread_mutex_t fine_grain[HASH_TABLE_CAPACITY];
};
struct hash_table *hash_table_create() {
struct hash_table *hash_table = calloc(1, sizeof(struct hash_table));
hash_table->fine_grain = { PTHREAD_MUTEX_INITIALIZER };
...
}
我问的原因是负责项目的助教说:
使用锁后,确保销毁它,我们将检查内存泄漏
这不是引用分配的哈希表,而是单独的锁,所以我想知道为什么
pthread_mutex_destroy
可能永远是必要的。