2

以下のコードを見てみましょう。スレッドがready =false を認識したため、条件変数 *mv_cv* を待機し、ミューテックス *my_mutex* を解放してスリープ状態にしたとします。しばらくして、 ready がまだ値 false を保持している間に、何かが誤ってスレッドを起こします。私の質問は次のとおりです。スレッドは現在、ウェイクアップする前にミューテックスを再取得することにより、ミューテックス *my_mutex* を保持していますか?

pthread_mutex_lock(&my_mutex);

while ( !ready )
{
        pthread_cond_wait(&my_cv, &my_mutex);
}

//some operation goes here

pthread_mutex_unlock(&my_mutex);
4

1 に答える 1