while ループと static int に基づいて自分自身を制限する単純な foreach ループがあります。制限しない場合、CPU は 10% 未満のままです。制限すると、CPU は 99/100% になります。Parallell.Foreach 内のクラスへの呼び出しの数を安全に制限するにはどうすればよいですか?
static int ActiveThreads { get; set; }
static int TotalThreads { get; set; }
var options = new ParallelOptions();
options.MaxDegreeOfParallelism = 1;
Parallel.ForEach(urlTable.AsEnumerable(),options,drow =>
{
using (var WCC = new MasterCrawlerClass())
{
while (TotalThreads <= urlTable.Rows.Count)
{
if (ActiveThreads <= 9)
{
Console.WriteLine("Active Thread #: " + ActiveThreads);
ActiveThreads++;
WCC.MasterCrawlBegin(drow);
TotalThreads++;
Console.WriteLine("Done Crawling a datarow");
ActiveThreads--;
}
}
}
});
私はそれを制限する必要があります。はい、最大並列処理には独自の制限があることを理解していますが、サーバーの CPU がその制限に達する前にスイッチが動かなくなります。