ThreadPool.GetAvailableThreads(out var workerAvailable, out var iocpAvailable);
ThreadPool.GetMinThreads(out var workerMin, out var iocpMin);
ThreadPool.GetMaxThreads(out var workerMax, out var iocpMax);
var total = Process.GetCurrentProcess().Threads.Count;
var workerCurrent = workerMax - workerAvailable;
var iocpCurrent = iocpMax - iocpAvailable;
var other = total - worker - iocp;
worker
, 3
iocp
和150
other
我用这个做了个垃圾桶
procdump
ClrMd
(
ClrThread.IsThreadpoolCompletionPort
和
ClrThread.IsThreadpoolWorker
属性)。最后我从垃圾堆里得到了一个不同的结果:99
工人
iocp公司
线程。
为什么第一种方法返回如此奇怪的结果?
升级版本:
ThreadPool.GetAvailableThreads
max minus currently active (not idle)