[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends-ml 1540] Re: Java スレッドプ ログラミングを読む会第 4 回議事録



こんばんは、武川です。

From: Daisuke Sawada <swd@xxxxxxxxxxxxxxxx>
Subject: [jfriends-ml 1538] Re: Java スレッドプログラミングを読む会第 4  回議事録
Date: Wed, 28 Feb 2001 18:56:33 +0900

> x86の場合はずばり CMPXCHG (compare and exchange) という命令があるので、
> こいつのことじゃないかと思います。TestAndSetと似たようなものですね。

やはり名前そのままに、比較して真の場合なら値を入れ替えるという処理を
排他的に行なうという命令なんですよね?

> SMP環境でのスピンロックにCMPXCHGを使うのは非常に効率的だと思うのですけど、
> JVMの上だとどうなのでしょうね・・まだ理解不足なのかなぁ・・
> 
> そもそも、どういうソースコードを書けばCompareAndSwap命令に出来ると
> コンパイラが判断できるのか?というのも興味湧きます。

これは、多分、P.160のような楽天的な更新のプロトコルを利用した
ソースを書けば期待できるのではないでしょうか?

楽天的な更新プロトコルにおいてP.159の12行目の

3. 入手して以来、古い状態が変化していない場合に限り、新しい状態をコミットする。

というのは、まさにCompareAndSwap命令というものが使えると嬉しい状況ですよね。

#コンパイラが具体的にどう処理するのか?という突っこんだ話であれば
#コンパイラの構造についてほとんど理解していないのでわかりません。

以上です。