2010-03-29
■ [prog] STM(ソフトウェアトランザクションメモリ)
関数プログラミング入門 の後半が面白かったのでメモ。
- CPUのクロック数が頭打ちに → これからは並行処理しないと速くならない時代
- でもロックはいろいろ大変…
- ロック過剰→性能低下
- ロック不足→再現しずらいバグ
- デッドロック
- 組み合わせ問題 (スライドp.86-)
- そこでSTM (ソフトウェアによるトランザクションメモリ)ですよ
- データベースのトランザクションに似たもの
- 実行してみて、競合してたらやり直し
- 性能的には劣るが扱いやすい
- トランザクションの中ではIOとかやっちゃだめ(複数回実行されることがあるから)
- 気をつける (Clojure等)
- 型システムで、トランザクション中にIOがないことを保証 (Haskell) ←かっこいい