graph (4) : 身近な例

さて,並列性や破壊的操作の問題と常に隣り合わせなグラフ構造が身近なところに存在します.そう,ファイルシステムです.さらに Windows のファイルシステムはループ構造が発生することを許しているため,まさに頭痛の種はよりどりみどりです.「ある時刻に,指定したディレクトリ以下に存在するファイル全てを列挙する」というプログラムは入門者向けの例題に使われていることがありますが,とんでもない,それこそ上で述べたようなトラップが山のように仕掛けられた難問です.
Windows 環境で,ディレクトリ構造が変化しないと仮定した場合の「循環」対策については,GDNJ の 「エクスプローラの検索」というスレッドで紹介した 以下の記事が参考になります.

時間変化の影響を排してある時点での完全なファイル一覧を取得するには,ある瞬間のローカルコピーを作り出すスナップショット機能か,何らかの排他処理が必要になると考えられます.前者については「インサイドMicrosoft Windows第4版〈下〉」(asin:4891004746) の『10.3.7 ボリュームシャドウコピーサービス』が参考になるでしょう.排他処理については,Windows にはディレクトリに対する Lock は存在しなかったと記憶しています.