3

私は最近、トランザクションメモリについてよく読んでいます。TM は少し誇大宣伝されているため、多くの人が熱心に取り組んでおり、ロックに関する厄介な問題の解決策を提供していますが、定期的に苦情も見られます。

  • I/O を行うことはできません
  • アトミック セクションを複数回実行できるように記述する必要があります (ローカル変数に注意してください!)。
  • ソフトウェア トランザクショナル メモリのパフォーマンスが低い
  • [ここにあなたのペットのおしっこを挿入してください]

私はこれらの懸念を理解しています: 多くの場合、いくつかの本当に気の利いたアトミック操作 ( LL/SCなど) をサポートする特定のハードウェアでのみ実行される STM に関する記事を見つけたり、架空のコンパイラでサポートする必要があるか、それを必要とします。メモリへのすべてのアクセスがトランザクショナルであること、モナド スタイルの型制約などが導入されることなどです。そして何よりも、これらは実際の問題です。

ロックの代わりにトランザクション メモリをローカルで使用することに反対する理由は何ですか? これはすでに十分な価値をもたらすでしょうか、それともトランザクション メモリを使用する場合、あらゆる場所で使用する必要がありますか?

4

3 に答える 3

1

私は最近、トランザクションメモリについてたくさん読んでいます。

ソフトウェアトランザクショナルメモリに関するこのポッドキャストにも興味があるかもしれません。このポッドキャストでは、ガベージコレクションに基づくアナロジーを使用してSTMも紹介されています。

この論文は、ガベージコレクションとトランザクションメモリのアナロジーについてです。類推の美しさを理解することに加えて、この議論は、トランザクションメモリ(Goetz / Holmesのエピソードで言及された)および-ある程度-ガベージコレクションへの良い入門書としても役立ちます。

于 2009-05-22T12:41:19.203 に答える
1

はい、あなたが言及する問題のいくつかは今では本当の問題である可能性がありますが、物事は進化します。他の新しいテクノロジーと同様に、最初に誇大広告があり、次に新しいテクノロジーはいくつかの未解決の問題があることを示し、次にこれらの問題のいくつかは解決され、他の問題は解決されません。これにより、問題を解決する別の可能性が生まれます。このテクノロジーは、より適応性があります。

現在の最先端技術の制約を残すことができるアプリケーションの一部にSTMを使用できると言います。たとえば、効率の低下を気にしないアプリケーションの一部。

トランザクション部分と非トランザクション部分の間の通信は大きな問題です。ロックを認識しているSTMがあるため、トランザクション以外の部分と一貫した方法で相互作用できます。

I / Oも可能ですが、トランザクションは取り消せなくなります。つまり、中止できなくなります。つまり、同時にI/Oを使用できるトランザクションは1つだけです。現在のように、非トランザクションの世界では、トップレベルのトランザクションが成功したらI/Oを使用することもできます。

ほとんどのSTMライブラリベースシステムは、ユーザーにトランザクションデータと非トランザクションデータを区別するように強制します。そうです、これが正確に何を意味するのかを理解する必要があります。一方、コンパイラーは、どのアクセスがトランザクションである必要があるかを推測できます。問題は、アクセスが保守的すぎて、さまざまな種類の変数を明示的に管理するときに得られる効率が低下する可能性があることです。これは、静的変数、ローカル変数、および動的変数を持つことと同じです。それぞれが正しいプログラムを作成するために必要な制約を知る必要があります。

于 2010-05-18T13:56:59.707 に答える
0

ロックの代わりにトランザクション メモリを使用すると、そのロックを保持して実行されるすべてのコードが、完了時にロールバックされる可能性があります。したがって、以前にロックを使用していたコードはトランザクション対応である必要があり、すべて同じ欠点 (および利点) があります。

では、TM の影響を、ロックを保持するコードの部分だけに制限することもできますよね? そのシナリオでは、保持されたロック中に呼び出すことができるすべてのコードが TM をサポートする必要があります。ロックを保持しておらず、ロックを保持しているコードから呼び出されないプログラムはどれくらいありますか?

于 2009-05-22T19:09:43.733 に答える