BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース .NET ThreadPoolにおける最新の変更

.NET ThreadPoolにおける最新の変更

.NET 2.0 SP 1が.NET 3.5でリリースされた時、スレッドプロトコルには重大な変更があった。Michael C. Kennedy氏が発見したように、すべてが最高だというわけではなかった。

最初の変更は、デフォルトのスレッド最大数をプロセッサにつき25から250に増やすことである。これは、スレッドプールのデッドロックに対処するための 変更であった。余りにも多くのスレッドが別のタスクで待ちの場合に、これらのデッドロックが発生する。いったん25すべてのスレッドがブロックされると、 待ちのタスクはスレッドにアタッチされない。この変更はデッドロックの可能性を完全に取り除くわけではないものの、その可能性をはるかに少なくする。

その他の変更は、事実バグである。通常、.NETは必要であれば即座に最少数のスレッドまで割り当てる。そこからは最大スレッド数に到達するまで、1秒に つきわずか2つのスレッドが作成される。アプリケーションが直ちに多数のスレッドプールスレッドが必要になることが分かれば、最小スレッド数を増やすこと ができる。

Michael C. Kennedy氏は .NET 2.0 Service Pack 1では、最小スレッド数が無視される(ブログ・英語)ことを発見した。アプリケーションが過度のスレッドプールスレッド数を必要とする場合は、数秒もしくは数分おいてから起動する。

Michael C. Kennedy氏によるとMicrosoftの窓口が言うには、修正は.NET 2.0 SP 2に含まれるということである。このリリース予定日は不明である。

原文はこちらです:http://www.infoq.com/news/2008/05/ThreadPool

この記事に星をつける

おすすめ度
スタイル

BT