Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
Threading.Interlocked.Exchangeについて。
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30248#CommentId82829
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
みどりこぶた
 (高校生)
投稿日時
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様の返答のサンプルコードが枠線で囲まれ文字が色付けされていると思いますが、どうするとそう書けるのでしょうか…?