gpt4 book ai didi

c - 在函数内安全地初始化锁/互斥量

转载 作者:行者123 更新时间:2023-12-04 10:57:52 25 4
gpt4 key购买 nike

场景:我想在某个 foo.h/foo.c 模块中提供一个独立的 foo。该函数应该能够以线程安全的方式执行。

问题 我如何在函数内部安全地初始化互斥量(或任何其他锁抽象)。我以为我可以有这样的东西:

foo(){
static pthread_mutex_t *lock=NULL;
if (lock == NULL){
lock = init_lock(lock);
}
//acquire (lock)
// foo ;
//release (lock)
}

但是我必须执行:

if (lock == NULL){
lock = init_lock(lock);
}

原子地,我不知道如何。

最佳答案

你想的太复杂了

static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;

旨在实现您想要实现的目标。

如果您只需要该函数中的锁,请将静态变量放在那里。如果您在多个函数中需要它,请将它作为全局变量放在 .c 文件中。

关于c - 在函数内安全地初始化锁/互斥量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15323334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com