コンペア・アンド・スワップとは? わかりやすく解説

Weblio 辞書 > 固有名詞の種類 > 製品 > コンピュータ > その他コンピュータ製品 > 排他制御 > コンペア・アンド・スワップの意味・解説 

コンペア・アンド・スワップ

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/02/11 05:42 UTC 版)

Lock-freeとWait-freeアルゴリズム」の記事における「コンペア・アンド・スワップ」の解説

Lock-freeWait-free アルゴリズム作るには、CPU専用アトミック命令提供し、それを使う必要がある。最も重要なのは、コンペア・アンド・スワップ(Compare and Swap, CAS省略する)である。Java では、java.util.concurrent.atomicパッケージ内のクラスに、compareAndSetメソッドとして存在する。これは、メモリアドレス、古い値、新しい値の3つを使う。もし、メモリアドレス保存したある値が、指定された古い値ならば、それを新しい値に置き換えそうでない場合は、何もしない。そして、この処理が成功したかどうかプログラム返すCPUはこれをアトミック実装する必要がある。現在[いつ?]のIntelプロセッサにはこの機能がある。この機能は、メモリからデータ読み出し変更し書き戻すという処理を、他のスレッドその間同時に変更行ってない場合にのみ行う、というアルゴリズム可能にする。 例えば、先ほど銀行口座の例で、別なアルゴリズム見てみる。ATM現在の値を読み出し加算し書き込む、という3ステップにおいて、3ステップ目をコンペア・アンド・スワップを使って行う。この3ステップの間に他のスレッドが値を書き換えなければ、3ステップ目のコンペア・アンド・スワップは成功する。しかし、この3ステップにおいて預金処理が同時並行起これば、1ステップ目の読み出し金額と、3ステップ目の書き込みで「比較して交換」を使って読んだ金額一致しないため、失敗しATMは1ステップ目からやり直す全てのATM成功するまでこの3ステップ繰り返す。このアルゴリズムLock-free ではあるが、Wait-free ではない。なぜなら、他のATM預金することにより、自分ATM何度も挑戦する必要があるからである。 Wait-Free Synchronization (1993) では、コンペア・アンド・スワップがなぜ、Wait-freeにおいて必要か証明している。

※この「コンペア・アンド・スワップ」の解説は、「Lock-freeとWait-freeアルゴリズム」の解説の一部です。
「コンペア・アンド・スワップ」を含む「Lock-freeとWait-freeアルゴリズム」の記事については、「Lock-freeとWait-freeアルゴリズム」の概要を参照ください。

ウィキペディア小見出し辞書の「コンペア・アンド・スワップ」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ




固有名詞の分類

このページでは「ウィキペディア小見出し辞書」からコンペア・アンド・スワップを検索した結果を表示しています。
Weblioに収録されているすべての辞書からコンペア・アンド・スワップを検索する場合は、下記のリンクをクリックしてください。
 全ての辞書からコンペア・アンド・スワップ を検索

英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「コンペア・アンド・スワップ」の関連用語

コンペア・アンド・スワップのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



コンペア・アンド・スワップのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのLock-freeとWait-freeアルゴリズム (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS