gpt4 book ai didi

c# - 确定在 C# 中的线程池中等待的线程数

转载 作者:行者123 更新时间:2023-12-03 12:44:27 35 4
gpt4 key购买 nike

是否可以看到线程池的队列中有多少线程正在等待执行?

如果我这样做:

for (int i = 0; i < 5000; i++)
{
tasks.Add(Task.Run(() => { TaskTest(); }));
}
Task.WaitAll(tasks.ToArray());

在 TaskTest 中,我做了一些通常需要大约 500 毫秒的工作,我还更新了一个线程数最多的变量:
ThreadPool.GetMaxThreads(out maxthreads, out completionthreads);
ThreadPool.GetAvailableThreads(out availablethreads, out completionthreads);

int threads_in_use = maxthreads - availablethreads;
mHighwaterThreads = Math.Max(mHighwaterThreads, threads_in_use);

对于我的电脑,最大线程数通常在 32000 以上。mHighwaterThreads 通常在 75 左右。

我想知道是否有办法查看线程池中有多少线程正在等待执行。

最佳答案

我还没有找到获取线程池中等待执行的任务计数的方法。

但我找到了一种方法 监控线程池健康 :

我创建了一个全局计时器(假设每 5 秒一次),并测量从前一个“Elapsed”开始的延迟:
Microsoft .NET Timers在ThreadPool中执行,如果delay异常,比如7秒,我知道Elapsed已经等了很久,所以ThreadPool已经饱和了。

关于c# - 确定在 C# 中的线程池中等待的线程数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28595981/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com