|
■No80707 (マンマミーア さん) に返信 > VB2013を使用しています。 > > 1行程あたり5秒程度かかる処理があるとします。 > これを100個並行して処理する方法ってあるのでしょうか? > 100個のスレッドに分割しても、 > CPUは100個を一度に捌けるわけではなく、 > ほとんどのスレッドが待ち状態、ということになるのでしょうか?
CPUが本当に同時に実行できるのはコア数ぶんのスレッドです。 ※ハイパースレッディング他もっと細かい話はひとまずおいといて
なので、CPUを使う処理は同時に100個も動かすことは出来ません。 多くのスレッドが待ち状態になります。 ただし、処理がIO待ちを挟んでいるなら、待機中はCPU を使いませんので、実質的についてもっと多くのスレッドが同時実行してるのと同じことになる場合もあります。
いずれにしてもスレッド100個というのは普通は非効率なので、例えばTaskなどを使用して、実際に使うスレッド数は状況に合わせてよきに計らってもらうのが常套です。
shuさんが紹介されてるParallelとかも同様です。
|