CLR最大I / O(端口完成)线程确定

时间:2018-01-23 22:21:36

标签: c# .net multithreading

我一直在研究I / O线程,但我对系统如何确定限制感到有些困惑。

根据MSDN

  

如果指定负数或大于最大活动线程池线程数(使用GetMaxThreads获取)的数字,则SetMinThreads返回false并且不会更改任何一个最小值。

当我打电话时:

//Max IO Threads is 1000
//max Works is set to 32767
ThreadPool.GetMaxThreads(out var maxWorker, out var maxIO);

系统如何确定我只能拥有1000个I / O线程,无论如何都要增加该限制?

正如文档所述,设置数字大于最大值将无效

1 个答案:

答案 0 :(得分:3)

MSDN只是告诉您SetMinThread不能使用大于当前最大线程数的值。但是,可以通过调用SetMaxThread

来更改该号码
ThreadPool.GetMaxThreads(out var worker, out var io);
Console.WriteLine(io); // 1000

ThreadPool.SetMaxThreads(worker, 32000);
ThreadPool.GetMaxThreads(out worker, out io);
Console.WriteLine(io); // 32000

强制执行的唯一限制是32767.您无法设置更多的线程。