0

これは、他のスレッドが変数フラグを使用していない場合に、マスター スレッドがウェイクアップ シグナルを見逃さないようにするための安全な方法ですか?

void *Cancel_master_thread(void *arg)
{
  while (1)
  {
    flag = 0;
    pthread_mutex_lock(&cancel_in_progress);
    flag = 1;
    pthread_cond_wait(&cancel_finished, &cancel_in_progress);
    pthread_mutex_unlock(&cancel_in_progress);
  }
}

void *Cancel_slave_MB()
{
  while (1)
  {
    while (flag != 1)
    {
    }

    pthread_mutex_lock(&cancel_in_progress);
    pthread_cond_signal(&cancel_finished);
    pthread_mutex_unlock(&cancel_in_progress);
  }
}
4

2 に答える 2