DOBON.NETプログラミング道掲示板

■35430 / 親記事)  SpinWait()を使う理由
  
□投稿者/ Wan 付き人(79回)-(2023/05/31(Wed) 10:26:19)
  • アイコン環境/言語:[VisualBasic2019 Windows10 Basic Framework4.7.2] 
    分類:[.NET] 

    MicroSoftの解説に、次のようなコードが記載されています。
    
    https://learn.microsoft.com/ja-jp/dotnet/standard/parallel-programming/how-to-cancel-a-task-and-its-children
    
    この中に、次のように、SpinWait()を使っている部分があります。
    
    For i As Integer = 0 To maxIterations
      Dim sw As New SpinWait()
        For j As Integer = 0 To 100
          sw.SpinOnce()
        Next
      (・・・省略・・・)
    Next
    
    多分?少し時間稼ぎしているだけのように思えますが、ワザワザSpinWait()を使う理由ってありますか?Thread.Sleep()でもいいような?気がします。
    
    詳しい方、教えて頂けませんか?
    

マルチポストを報告
違反を報告
引用返信 削除キー/
■35431 / ResNo.1)  Re[1]: SpinWait()を使う理由
□投稿者/ Hongliang 大御所(641回)-(2023/05/31(Wed) 13:29:17)
  • アイコン' Do a bit of work. Not too much.
    とコメントにあるように、少しだけの仕事を表すダミーコードです。
    Sleep系の場合スレッドコンテキストの切り替えとかが起こるので、実際のアプリで書く「意味のあるコード」に対するサンプルコードとしての完全な代替にはなりません(完全な代替は必要ないというケースがほとんどですけども)。
違反を報告
引用返信 削除キー/
■35432 / ResNo.2)  Re[2]: SpinWait()を使う理由
□投稿者/ Wan 付き人(80回)-(2023/06/02(Fri) 17:36:13)
  • アイコン「スレッドコンテキストの切り替えとかが起こる」という部分など、私の理解できる
    を超えていますが、意味があって使われていることが判りました。

    ありがとうございました。

解決み!
違反を報告
引用返信 削除キー/



スレッド内ページ移動 / << 0 >>

このスレッドに書きこむ

Mode/  Pass/


- Child Tree -