- - PR -
ThreadのPriorityについて
«前のページへ
1|2|3
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-06-15 11:18
こんにちは。大分時間が立ちましたが、再度このスレッドを継続させて頂きます。 未だに、前記の止まる位置が特定できていません。現象的には、あるThreadの動作中に止まったり(DeadLockがなさそうですが)、Thread.StartをしたはずのThreadはThreadStatusがずっと「Backgroud」と「Unstarted」のまま、Startしなかったりしている状況です。 ここで、一つ知りたいのは、Process内にあるThread数[BackGroupとForground両方]はどの位は妥当でしょうか?ThreadPoolのデフォルト値は25で、そうするとProcess内の総Thread数はこの数値を超えると何か不都合が生じるリスクが大きくなるでしょうか? 自分のProcessでは、BeginInvokeとThread.Startで起したThreadピーク時のThread数は 軽く50を超えてしまうので(.Netはウラで勝手に動かしているThreadもある?)、この辺り危険でしょうか? 以上、宜しくお願い致します。 | ||||||||||||
|
投稿日時: 2006-06-15 12:18
他にもいろんなプロセスが起動しているでしょうから、一概には言えませんが、CPUコア1個あたり数スレッドくらいに留めておくのが吉です。
リスクちゅーか、優先度の関係でなかなか実行されません。
よろしくないです。 1コアのCPUで、他にも標準的なプロセスが起動している状態でスレッド50個が待ち状態にもせずに並行に実行してしまったら、なかなか実行の機会が与えられません。 グリッド向きのアプローチを、たかだか数個のコアしか持たないシステムで実践しては駄目です。 | ||||||||||||
|
投稿日時: 2006-06-16 13:16
ご指摘ありがとうございます。自分ももしかすると止まったように見えたThreadが何らかの理由で実行の機会がもらえないのではないと考え始めました。 そこで、調査するにはProcessのThread情報を抽出したいのですが、ProcessThreadにはThreadIDしかなく、自分でThread.Startで生成したThreadにはThreadNameしかなく、ThreadIDが取れません。関連付けするには何らかの方法がありますか? 以上、ご教授お願いします。 | ||||||||||||
|
投稿日時: 2006-06-22 17:13
自己レスですが、以前起きたThreadが止まってしまう現象ですが、もしかするとAutoResetEvent絡みの問題になっているかもしれません。AutoResetEventに関するパッチがあって、この件に詳しい情報を持っている方はいらっしゃるなら、是非教えて頂きたい。
なお、WindowのProcess内のThreadは同時間間隔で切り替えているので、特定なThreadを切り替えせずに、最初から最後まで完了させることが可能ですか? 以上、宜しくお願い致します。 |
«前のページへ
1|2|3