私はCでプログラムを書いていて、A、B、Cの3つの関数があります。これらの関数へのアクセスをロックしているグローバルとして静的ミューテックスがあります。関数 A、B、C はマルチスレッドから任意の順序で呼び出されるため、私のコードは次のようになります。
static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
int A() {
pthread_mutex_lock(&mutex);
... do some processing...
pthread_mutex_unlock(&mutex);
return anInt;
}
int B() {
pthread_mutex_lock(&mutex);
... do some processing...
pthread_mutex_unlock(&mutex);
return anInt;
}
int C() {
pthread_mutex_lock(&mutex);
... do some processing...
pthread_mutex_unlock(&mutex);
return anInt;
}
デッドロックの原因は何ですか?