シナリオ:いくつかの 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);
}
アトミックに、方法がわかりません。