排他

循環検出中にポインタを上げ下げしたいのだが、循環検出中にポインタを上げ下げするのを防ぎたい。これを両立するのは無理なので折衷案を考えてみた。

  1. 循環検出を開始する。
  2. ポインタを上げ下げしようとする。
  3. 上げ下げイベントを待機キューに送る。
  4. 循環検出を終了する。
  5. 待機キューの処理を開始する。

という流れだ。あまり特殊なことはしていない。