フェッチ・アンド・アドレスのコンセンサス番号は2マルチスレッドでコンセンサス番号が重要なのはなぜですか?
どのような意味で、どのようにマルチスレッド・プログラミングに影響するのか苦労していますか?私はそれがcompareandswapと比較してどのように影響するかについていくつかの実用的な例が大好きです...ありがとうございました。
フェッチ・アンド・アドレスのコンセンサス番号は2マルチスレッドでコンセンサス番号が重要なのはなぜですか?
どのような意味で、どのようにマルチスレッド・プログラミングに影響するのか苦労していますか?私はそれがcompareandswapと比較してどのように影響するかについていくつかの実用的な例が大好きです...ありがとうございました。
フェッチアンドアドは、メモリ内の読み込みと変更、および位置を自動的に行うことができます。コンセンサスは、プロトコル(この場合fetch-and-add)がn個の異なるスレッドに対してコンセンサスを与えることができることを意味します。
それはどういう意味ですか?
私たちの目標は、プロトコルを使用することです。 1つのスレッドが値を決定し、その値が他のすべてのスレッドによって採用されます。あなたはそれらのプロトコルのいくつかをGoogleにすることができます。マルチスレッドでは、メモリをアトミックに変更することができ、スレッドが時々1つの値を決定することが重要です。
コンセンサスプロトコルは待機がないことに注意してください。何らかの理由ですべてのスレッドが処理を中断しても処理が進行することを意味します。したがって、マルチスレッドを使用する場合は、オブジェクトのコンセンサス番号を知ることが重要です。たとえばコンセンサス番号。原子レジスタ(1)は、2つのスレッドについてコンセンサスを与えることができる原子レジスタのみを使用してオブジェクトを実装することは決してできないことを示しています。そのため、マルチスレッドでフェッチとアドインなどの構文を使用しています。
例 通常、OSでのスケジューリングはFIFOキューで行われます。 FIFOキューはコンセンサスが2つあるため、マルチスレッドに使用するのが安全です。