Hatena::ブログ(Diary)

kameidの備忘録 - Sharpen the Saw! このページをアンテナに追加 RSSフィード

2008-12-01

volatile 修飾子

http://proger.blog10.fc2.com/blog-entry-20.html

結構長い間 Java をやってきたというのに、知らなかったこと・・・。

コンパイラの自動最適化抑止を行うための機能であり、

凡百の参考書を読んでもこれの使い方は身につかなそう。

この方の説明はとてもわかりやすい。あえて分かりにくく

説明を抜粋するならば。

  while (event_flag == 0) {
    /* 処理。但しevent_flagは操作しない */
    ....
  }

という処理において、event_flag に volatile 修飾子を

指定しない場合、ループ継続条件である event_flag が

最初の一回しか評価されないようにコンパイラ最適化

行ってしまう可能性があるということ。

シングルスレッドで動作する場合、ループ中に event_flag

が変更されない上記ループであれば、これは100%正しい。

しかしマルチスレッドにおいては・・・。

・・・って、おお、なんとわかりにくい説明か!

やはりこの方の記事を読むのが一番良さそうだ。

しかしこんなことはマルチスレッドプログラミング

やるのであれば必須知識と言えそうなことだ。

こういうことも知らない自分の浅学を反省。

■参考URL

[Think IT] 第3回:マルチスレッドなんて怖くない! (1/3)

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/kameid/20081201/1228131770