12/09/27 09:47:06.61 .net
①
inc dword ptr [count]
というのはアトミックですか?
++cnt;
をVC10でReleaseコンパイルしたら上記のようになったのですが、
デバッグコンパイルしたら下記のように分解されてしまいました。
②
mov eax,dword ptr [count]
add eax,1
mov dword ptr [count],eax
②は明らかにアトミックではないと思いますが、
コードの途中で、他のスレッドが同じコードを通ったときに
カウントがおかしくなってしまうのは構いません。
2つ以上のスレッドが同時に①か②を通ったときに
動作が異なる可能性があるのかを知りたいです。
(動作が異なるならインラインアセンブラで書くか、
カウントがおかしくなるのが困るようになったときは
クリティカルセクションでも使います)