ロック

  • ポインタaの参照上げ下げと循環検出は排他する?

の項。循環検出の際にポインタ先のオブジェクトを削除する必要がある。その際の参照下げで引っかかってしまった。
しかし、循環参照の中から呼ばれている場合と外から呼ばれている場合とを区別するのは難しい。フラグで管理する訳にも行かないし。今実装してあるのはSynchronous版だから困っているのだけど、先の論文にはConcurrent版も載っていたはず。そちらも実装してみるかなぁ。