>>715
【sleep()を使う場合の最もましなコード】
(それでもどうしても遅延が発生する。)

void mySetEvent() // スレッドBが使うとする。
{
  BeginAtomicFence(&g_fence); // あなたが言ったAtomic Fenceの開始。
  g_bEvent = 1;
  EndAtomicFence(&g_fence); // あなたが言ったAtomic Fenceの終了。
}

void myWaitForEvent() // スレッドAが使うとする。
{
  // 以下ループで、CPUがフルパワー状態になり電気の無駄使いになる:
  for ( ;; ) {
    BeginAtomicFence(&g_fence); // あなたが言ったAtomic Fenceの開始。
    if ( g_bEvent ) {
      g_bEvent = 0;
      EndAtomicFence(&g_fence); // あなたが言ったAtomic Fenceの終了。
      sleep(100);  // 100(ms) 待つ。
      break;
    }
    EndAtomicFence(&g_fence); // あなたが言ったAtomic Fenceの終了。
  }
}