C# 确定C中线程池中等待的线程数#
可以看到线程池队列中有多少线程正在等待执行吗 如果我这样做:C# 确定C中线程池中等待的线程数#,c#,multithreading,C#,Multithreading,可以看到线程池队列中有多少线程正在等待执行吗 如果我这样做: for (int i = 0; i < 5000; i++) { tasks.Add(Task.Run(() => { TaskTest(); })); } Task.WaitAll(tasks.ToArray()); 我的电脑的最大线程数通常在32000以上。mHighwaterThreads通常在75左右 我想知道是否有办法查看线程池中有多少线程正在等待执行。我还没有找到办法获取线程池中等待执行的任务数 但是
for (int i = 0; i < 5000; i++)
{
tasks.Add(Task.Run(() => { TaskTest(); }));
}
Task.WaitAll(tasks.ToArray());
我的电脑的最大线程数通常在32000以上。mHighwaterThreads通常在75左右
我想知道是否有办法查看线程池中有多少线程正在等待执行。我还没有找到办法获取线程池中等待执行的任务数 但是我找到了一种监控线程池运行状况的方法: 我创建了一个全局计时器(假设每5秒一次),并测量了前一个“已用”的延迟:
正如在ThreadPool中执行的一样,如果延迟异常,例如7秒,我知道已用时间必须等待很长时间,因此ThreadPool已饱和。存在ThreadPool.PendingWorkItemCount属性 如果您正在运行.net core,另一种可能性是运行
dotnet计数器监视器--进程id 123
这将为您提供一些运行时指标的控制台显示。我相信你要问的指标是倒数第三
Press p to pause, r to resume, q to quit.
Status: Running
[System.Runtime]
% Time in GC since last GC (%) 0
Allocation Rate / 1 sec (B) 66,480
CPU Usage (%) 0
Exception Count / 1 sec 0
GC Heap Size (MB) 234
Gen 0 GC Count / 60 sec 0
Gen 0 Size (B) 200,991,744
Gen 1 GC Count / 60 sec 0
Gen 1 Size (B) 385,440
Gen 2 GC Count / 60 sec 0
Gen 2 Size (B) 210,807,272
LOH Size (B) 74,140,000
Monitor Lock Contention Count / 1 sec 0
Number of Active Timers 314
Number of Assemblies Loaded 272
ThreadPool Completed Work Item Count / 1 sec 38
ThreadPool Queue Length 0
ThreadPool Thread Count 9
Working Set (MB) 242
一些有用的链接:
你是说线程池中有多少任务正在等待运行吗?如果你需要知道,那么你做错了。@Hans,我有一个服务器,它根据每个传入的请求创建一个任务。其中一些任务创建子任务。整个系统有很多组件,这只是我希望看到的另一个数字,它可以提供任何性能线索。所以不,我不需要知道,但这会很有趣。@pm100是的,这就是我要找的。@Cuthbert不,他没有做错!我们需要能够观察系统的运行状况:threadpool的线程数是由.NET自动调整的,但您如何知道您的代码工作正常或即将死亡?您可以观察线程池队列长度,它不能永久上升。
Press p to pause, r to resume, q to quit.
Status: Running
[System.Runtime]
% Time in GC since last GC (%) 0
Allocation Rate / 1 sec (B) 66,480
CPU Usage (%) 0
Exception Count / 1 sec 0
GC Heap Size (MB) 234
Gen 0 GC Count / 60 sec 0
Gen 0 Size (B) 200,991,744
Gen 1 GC Count / 60 sec 0
Gen 1 Size (B) 385,440
Gen 2 GC Count / 60 sec 0
Gen 2 Size (B) 210,807,272
LOH Size (B) 74,140,000
Monitor Lock Contention Count / 1 sec 0
Number of Active Timers 314
Number of Assemblies Loaded 272
ThreadPool Completed Work Item Count / 1 sec 38
ThreadPool Queue Length 0
ThreadPool Thread Count 9
Working Set (MB) 242