File.flock

もしかして 1 プロセスがロックできる数って上限があるのだろうか。もちろん OS やコンパイルオプション等によるとは思うが、どうも外部ライブラリが 2 回目の flock をやっていそうなタイミングで最初のロックが解除されている印象だ。あまりきちんと調べたわけではないが。

面倒なので flock とロックディレクトリの二段構えで行くことにした。

  1. ロックファイルの排他ロックを取得する。
  2. ロックディレクトリを作成する。
  3. ロックファイルのロックを開放する。
  4. 処理を行う。
  5. ロックディレクトリを削除する。

これで結構頑丈になったような気がする。