hiro345: 2012-08-23には、こんなことをつぶやいてみた

「RT @publickey: Topics: ローカルで動くHTML5製のWiki「CliWiki」を無償公開、イースト http://t.co/lY3P45G7」他についてのつぶやき

  • [10:11] RT @publickey: Topics: ローカルで動くHTML5製のWiki「CliWiki」を無償公開、イースト http://t.co/lY3P45G7
  • [10:16] RT @dart_lang: Update your #dartlang getters to new syntax. http://t.co/V74lYdO4
  • [10:25] @tmtms これはJavaに限らないのでは…
  • [10:32] @tmtms マルチスレッドプログラミングにおいて、アトミックな処理が必要なところで排他制御などをしなかったら、「期待しない値になる」ということは発生するはずですよ。
  • [10:38] @tmtms 言語仕様上、longについて代入演算はアトミックな処理と定義されているという話ですか?
  • [10:40] @tmtms ちなみにJavaではvolatileキーワードをつければ、long型についても代入演算はアトミックになったはず。
  • [10:47] @tmtms 代入演算子をアトミックにするというのは、そこそこ難しいような気もしますが…
  • [11:00] @tmtms つまり、Rubyでは変数へ代入するだけなら、複数のスレッドからその変数へアクセスするときに排他制御はしなくても正しく動作する、ということですか?
  • [11:04] @tmtms でも、おかしくなると書いてあるように見えますが….Rubyでマルチスレッドプログラミング | TechRacho http://t.co/lqgCd1fJ
  • [11:06] @tmtms しまった。これはいまの話にはあわない例か…すみません
  • [11:20] @hATrayflood @tmtms longの代入演算がアトミックでないのは、Javaのメモリモデルからくる話なので、Rubyではそういうことはないのかもしれないですね。ただ、マルチスレッドプログラミングで同期化をせずに処理を書くことがそもそもまずいという認識です。
  • [11:33] @tmtms @hATrayflood どのプログラミング言語でも並行プログラミングは難しいものなので、「Javaは難しい」というより「並行プログラミングは難しい」という感じです。