2017-01-24 5 views

答えて

2

トランザクションメモリ(TM)は、ロックフリーの同期方法です。ロックベースの同期メカニズムでは、一方のスレッドがロックを獲得し、同期されたブロックに入る一方で、他のスレッドはロックが利用可能になるまで待つ。 TMでは、スレッドはロックを待たず、それぞれロックが使用可能であるかのように続行します。しかし、実行の正確さを保証するために、同期ブロック内で行われるすべてのメモリアクセスは投機的に行われる。実行が同期領域の終わりに達すると、スレッドはお互いに通信し、読み書きされたメモリ位置を共有します(TM用語では読み取りセットと書き込みセットと呼ばれます)。スレッドが別のスレッドによって推論的に書き込まれたメモリ位置を読み込んだ場合、競合が発生し、競合解決が行われます。結局、2つ以上のスレッドに競合がない場合、それらは共に続行し、投機的な書き込みでメモリを更新します。実装に伴う複雑さにもかかわらず、粗い粒度のロックに似たプログラム(トランザクションの開始と終了のみを指定する必要があります)を使用して、より細かい粒度のロック(メモリ位置に基づく)の利点が得られます。

データのバージョニング(元データ対投機的データ)と競合解決(eager - do you going、やれやれ - 最後に行う)に基づいて、数十のTMシステムがあります。また、それらが実装されているプラ​​ットフォーム(ハードウェア、ソフトウェア、HyBrid)。

私は俳優に基づく並行処理で非常に良好ではないです。私の限られた知識で、それは他の俳優にメッセージを送ることによって働いているように見え、各俳優はそれが求められる仕事をし、必要な場合にはより多くの俳優を作ります。だから私は、概念的には、仕事が即座に作成され、利用可能なアクターの周りを渡される、分割と征服スタイルのプログラミングに似ていると思います。このタイプのパラダイムは、機能プログラミングと同様に、同期が必要な従来の共有メモリスタイルと直交しています。したがって、アクターベースのモデルは、本質的に並行しているので、ロックを必要とせず、フリー同期をロックする必要があります。

+0

ですから、基本的にすべてが同期メカニズムですか? – lapots

+1

TMは、当初、ロックフリー同期機構として提案されました。これは、計算単位がトランザクションであるプログラミングモデルとして使用する試みはほとんどありませんでした。トランザクションは、そのACIプロパティに基づいて並行性を利用するのに適しています。 –

関連する問題