Lamport's Bakery 法と呼ばれる同期法は、並列コンピューティング システムにおけるクリティカル セクションの問題を解決します。複数のプロセスが共有リソースを同時に使用する必要があるが、それができるのが 1 つのプロセスだけである場合、これはクリティカル セクション問題と呼ばれます。競合を回避し、システムの正確性を保証するための課題は、各プロセスが相互に排他的な方法でリソースを使用することを保証することです。
Lamport のベイク アルゴリズムの疑似コードは次のとおりです -
サイズ N (N はプロセスの総数) の配列 (「選択」と呼ばれる) をすべて 0 に初期化します。
サイズ N ですべて 0 の配列 (number と呼ばれる) を初期化します。
各プロセスは、クリティカルセクションに入るときに次のコードを実行します -
選択範囲[i] = 1
数値[i] = max(数値[0], 数値[1], ..., 数値[N-1]) 1
選択範囲[i] = 0
他のプロセス j ごとに、(number[j] == 0) または (number[i], i)
Lamport ベーキング アルゴリズムの利点
共有リソースへのアクセスを要求するプロセスまたはスレッドにさまざまなトークンを提供することで、公平性が確保されます。
指定された値に基づいてトークンを配布することで、飢餓を防ぎます。
シンプルで理解しやすく実行しやすいトークンベースの戦略を使用します。
効率的で、複雑なデータ構造やプロセス間の対話は必要ありません。
特殊なハードウェアやハードウェアの支援を必要とせずに、相互排他を実現します。
幅広いアプリケーションと高い適応性を備えており、さまざまなシナリオに適用して、同時計算の公平性と相互排他を確保できます。
分散システムまたは並列システムに取り組むソフトウェア エンジニアにとって便利なツールです。
Lamport ベーキング アルゴリズムの欠点
飢餓
オーバーヘッド
複雑さ
###結論は###
Lamport のベイク アルゴリズムと呼ばれる相互排他的なアルゴリズムにより、個々のプロセスまたはスレッドが相互に干渉することなく共有リソースを利用できるようになります。これは飢餓を防ぎ、正義を確保するためのシンプルなアルゴリズムです。 李>このアルゴリズムは、リソース アクセス リクエストを行う各プロセスまたはスレッドにトークンを割り当て、これらのトークンの値を比較して、与えられた順序を決定することによって機能します。リソースは、トークンが最も少ない操作から最初に利用可能になります。以上がランポートのベーカリー アルゴリズム: ランポートのベーカリー アルゴリズムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。