ロックがなぜ難しいか?
OSのロック機構を使わない場合は、自力でロック機構を作る必要がある。
プロセスやスレッドの「待ち」「待ち解除」を正しく実装できるのは基本的にOSのみ。
つまりそれ以外の方法を採る場合は、基本的にポーリングなどの方法を採ることになる。 ロックオブジェクトを正しく破棄する必要がある。
突然の電源断やリセット、プロセスの異常終了などでロックオブジェクトが残り続ける可能性がある。
ロックオブジェクトが残り続けている場合、担当しているプロセスやスレッドが本当に死んだかどうかを判定する必要がある。
「古い」だけで判定するのはややインチキ。
ロックオブジェクトの生成自体が競合する。
エラートラップをきちんとやらないと、失敗する。