CASマルチスレッド

CAS

ロックせずにコンペア・アンド・スワップ(比較交換)/スピン/スピンロック/

排他ロック:排他ロック同期悲観的ロックは、排他ロックの一種である、他のすべてのスレッドがスレッドを解放にロックを保持しているロックを待機してハングをロックする必要が生じます。それはそれは変わる前に、それを修正するために、他のスレッドがあるだろうと考え、悲観的ロック効率が非常に低いです。

オプティミスティック・ロックは、(使用されるメカニズムはCASです):ロックを解除するたびに矛盾が、それが成功するまでリトライ競合のために失敗した場合に、アクションを完了するために離れて存在しないことを前提としています。それが変わる前に、他のスレッドがそれを修正しないようにと考えられています。

しばしばサイクリック操作で完了するまでので、操作のクラスを指します。

CAS(V、A、B)、メモリVの値が、期待値Aは、Bの値を変更し(VがAに等しい、等しく実行、割り当てB Vに等しくありません)

原因ABAの問題は、スレッド1は、変数の値は、CAS、これに先立ち、2変数がAでCを置き換えるスレッドの値がAからBに置き換えるが、CでAを置換し、次にCASスレッド1に見出される準備ができています変数の値がまだあるので、CASの成功。しかし、実際にはCASが成功したものの、この時間は、シーンは、異なると元でしたが、問題が隠れていることがあります。

ソリューション(バージョンAtomicStampedReference)、バージョン番号を必要としない単純な値のタイプに基づい

おすすめ

転載: www.cnblogs.com/yZzcXQ/p/Thread-CAS.html