C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

スレッドの優先度に関する質問

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■92492 / inTopicNo.1)  スレッドの優先度に関する質問
  
□投稿者/ JP (1回)-(2019/09/30(Mon) 18:36:57)

分類:[.NET 全般] 

https://stackoverflow.com/questions/3836584/lowering-priority-of-task-factory-startnew-thread

このページに
マルチスレッドにおける優先度の設定方法が書かれています。


Dim Task0 As Task = Task.Factory.StartNew(
Sub()

Thread.CurrentThread.Priority = ThreadPriority.AboveNormal



Thread.CurrentThread.Priority = ThreadPriority.Normal

End Sub)

でいけることは確認できたのですが、
最後に
Thread.CurrentThread.Priority = ThreadPriority.Normal
で元に戻すのなぜ必要なのでしょうか?

Sub()から抜けた時点でそのスレッドは棄却されるはずなので、
優先度を元に戻す必要はないのではないでしょうか?
あるいは、Sub()から抜けたとしても、何らかのプロセスが残り続けるのでしょうか?

あと、スレッド優先度を変更する注意点が以下に書かれてあるそうです。
When changing the priority, keep in mind this: Why *not* change the priority of a ThreadPool (or Task) thread?

https://stackoverflow.com/questions/5589376/why-not-change-the-priority-of-a-threadpool-or-task-thread


読んでみたのですが、英語で書かれており
何が言いたいのかよく分かりませんでした。
どなたか分かりやすく解説いただけないでしょうか?


引用返信 編集キー/
■92493 / inTopicNo.2)  Re[1]: スレッドの優先度に関する質問
□投稿者/ 774RR (735回)-(2019/09/30(Mon) 19:11:29)
自分で作った Thread (特別な唯一の Thread) と
システムっつかライブラリが暗黙に作る ThreadPool (複数あって対等な) とでは
状況が全く異なり、
前者は Priority の設定をすることに大いに意味があるわけだけど
後者は (対等なスレッドがあることが前提なわけで) Priority の設定をしてはならないっす。

そもそも論として ThreadPool (システム側が複数のスレッドを事前に用意する) ってのは
その処理をどのスレッドで処理しても差がないような何かを複数スレッドに振るのが目的なので
ThreadPool の全スレッドは対等でなきゃならないので特定の1個だけ Priority を変えるのは論外。

自分で1つだけ作る Thread なら、必要に応じて Priority を上げるとか下げるとかはあってOK

引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ