私は最近、トランザクションメモリについてよく読んでいます。TM は少し誇大宣伝されているため、多くの人が熱心に取り組んでおり、ロックに関する厄介な問題の解決策を提供していますが、定期的に苦情も見られます。
- I/O を行うことはできません
- アトミック セクションを複数回実行できるように記述する必要があります (ローカル変数に注意してください!)。
- ソフトウェア トランザクショナル メモリのパフォーマンスが低い
- [ここにあなたのペットのおしっこを挿入してください]
私はこれらの懸念を理解しています: 多くの場合、いくつかの本当に気の利いたアトミック操作 ( LL/SCなど) をサポートする特定のハードウェアでのみ実行される STM に関する記事を見つけたり、架空のコンパイラでサポートする必要があるか、それを必要とします。メモリへのすべてのアクセスがトランザクショナルであること、モナド スタイルの型制約などが導入されることなどです。そして何よりも、これらは実際の問題です。
ロックの代わりにトランザクション メモリをローカルで使用することに反対する理由は何ですか? これはすでに十分な価値をもたらすでしょうか、それともトランザクション メモリを使用する場合、あらゆる場所で使用する必要がありますか?