[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends-ml 12433] Re: SharedCounter の実験 (1) - 再送
高橋(徹)です。
"murayama <locutus@xxxxxxxxxxxxxxxx>"さんは書きました:
> 「正しく」最適化された結果じゃないでしょうか?
>
> volatile変数もsynchronizedメソッドも使っていない場合は,
> 他スレッドの影響を無視することが許されるし,実行順序も変更できますよね.
確かにcounterをvolatileにすればHotSpot Server VMでも終了するように
なりました。
:略
>
> みたいな最適化が許されるわけですよね.
ループ内のisInterrupted()メソッド呼び出しがループ外に移動する可能性は
考えていませんでした。これは単なる実行順序の変更に入るのでしょうか?
ビジーループでぶん回している中で毎回falseが返却されるので、HotSpotが
最適化の一環で常時falseが返ってくると判断してループ外に出してしまった
ということなら考えられるのですが。
ちなみに、ThreadクラスのisInterrupted()はnativeメソッドとなっています。
> 本来このプログラム自体が意図的にバグを埋め込んだプログラムなので,
> 最適化によっては終了しなくなることもありえると思います.
これはまさしくそのとおりです。
--
TAKAHASHI,Toru
torutk@xxxxxxxxxxxx