2017-06-03 8 views

答えて

1

フェッチアンドアドは、メモリ内の読み込みと変更、および位置を自動的に行うことができます。コンセンサスは、プロトコル(この場合fetch-and-add)がn個の異なるスレッドに対してコンセンサスを与えることができることを意味します。

それはどういう意味ですか?

私たちの目標は、プロトコルを使用することです。 1つのスレッドが値を決定し、その値が他のすべてのスレッドによって採用されます。あなたはそれらのプロトコルのいくつかをGoogleにすることができます。マルチスレッドでは、メモリをアトミックに変更することができ、スレッドが時々1つの値を決定することが重要です。

コンセンサスプロトコルは待機がないことに注意してください。何らかの理由ですべてのスレッドが処理を中断しても処理が進行することを意味します。したがって、マルチスレッドを使用する場合は、オブジェクトのコンセンサス番号を知ることが重要です。たとえばコンセンサス番号。原子レジスタ(1)は、2つのスレッドについてコンセンサスを与えることができる原子レジスタのみを使用してオブジェクトを実装することは決してできないことを示しています。そのため、マルチスレッドでフェッチとアドインなどの構文を使用しています。

通常、OSでのスケジューリングはFIFOキューで行われます。 FIFOキューはコンセンサスが2つあるため、マルチスレッドに使用するのが安全です。

関連する問題