投稿者 みどりこぶた  (高校生) 投稿日時 2017/6/11 12:55:27
回答ありがとうございます、非常に勉強になりますm(_ _)m


>これを使うと何ができるかというと,「フラグが立っていなければフラグを立てて作業する」というようなことができます。
>ちなみに,スレッド間でアクセスの競合が起きても各種例外は発生しません。さらに,競合が起きたことを認識する方法も基本的にはありません。
勘違いを浮き彫りにしてくださりありがとうございます。
「変数へ値を設定する」と同時に前の値を取得することがミソなのですね。
サイトも読み直してみるとそう書いてありましたね^^;
"Exchange"…読んで字の如くですよね…。
また、競合は例外にはならないのですね。私のテストプログラムは根本から間違っていますね。



一応これで解決なのですが…、ただ、気になるのが、、、
>Long型は64bitプロセスならばやはり不要です。
これはbit幅が関係するよということ、もしくはその強調ですか?
単に変数に値をセットするだけの場合でも、型やプラットフォームによってそうとは限らない、という意味なのでしょうか?

例えば、上記の条件に合わない [型T] である [変数V] があるとして、そこに複数のスレッドからそれぞれ [値A]、[値B] を代入し続けた場合、[変数V] は [値A] でも [値B] でもない、壊れたような値である場合があるということですか?
Private V As T
スレッド1、Do: V = A: Loop
スレッド2、Do: V = B: Loop


脱線してるかもしれませんが、よろしくお願いします。

さらにさらに無関係な質問なのですが、YuO様の返答のサンプルコードが枠線で囲まれ文字が色付けされていると思いますが、どうするとそう書けるのでしょうか…?