场景:我想在某个 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);
}
原子地,我不知道如何。