【发布时间】:2017-08-10 09:59:07
【问题描述】:
给定这样的场景,在低功耗机器上运行:
var logFile = File.ReadAllLines("logpath");
var logList = new List<string>(logFile);
Parallel.ForEach(logList.Batch(8), fileLine =>
{
// work on the 8 lines
});
有没有一种简单的方法可以找出 Parallel.ForEach 进程中产生的最大并发线程数?
【问题讨论】:
-
"ThreadPool.GetAvailableThreads()" 给出池线程的最大数量和当前活动的线程之间的差异。没试过,但值得一试。
-
@RenéVogt 是的,这正是我希望通过 ThreadPool 之类的内置跟踪的原因。
-
检查可用线程与已用线程的问题是:在哪个点/哪个线程应该要求这些数字。当然,您处理的其他线程使用什么......所以我认为您不会以这种方式获得确切的值。
-
最大的问题当然是为什么你想知道这个......你可以(应该)对结果做些什么。
-
@HenkHolterman 我主要想知道是否可以通过添加更多内核来加快速度,或者它是否已经满负荷运行。
标签: c# multithreading parallel-processing