Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 确定C中线程池中等待的线程数#_C#_Multithreading - Fatal编程技术网

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