並列処理中のGUIの更新

OpenMP の parallel for の最中に GUIを更新したい場合があります。ループの全てでコールバックすると、クラッシュしてしまうので、メインスレッドの時だけ呼ぶようにすると大丈夫なようです。

  int step = 0;
  #pragma omp parallel for
  for (int j=0; j<100; j++)
  {
    #pragma omp atomic
    step++;

    // メインスレッドの時だけ処理を投げる
    if (omp_get_thread_num() == 0) gui_callback( step );
  }