MAX扫描计算机数量

时间:2011-11-03 15:01:31

标签: c# multithreading active-directory

我有一个运行Active Directory设备的域。我从域中获取所有计算机并以新线程连接到每台计算机。但最大线程数不超过100.那么一次可以扫描的最大线程数和最大机器数是多少?

修改

 var scanningThreads = new Thread[scannThreads + 1];
                for (int i = 0; i < scannThreads; i++)
                {
                    scanningThreads[i] = new Thread(ShowMembersOfAdministratorsGroup) {IsBackground = true};
                    scanningThreads[i].Start(new ParametersWrapper()
                                                 { Computers = computers.GetRange(0, scanningComputers), Event = e });
                    computers.RemoveRange(0, scanningComputers);
                }

1 个答案:

答案 0 :(得分:0)

  

最大线程数是多少?

答案是:很多!当然超过100.其中一个限制因素是内存 - 每个.NET线程分配一个1MB的堆栈。

您永远不希望在一个应用程序中接近该数字。理想情况下,您将拥有与核心相同数量的线程,并且没有阻塞调用。这是因为线程是大资源,并且因为当OS调度线程运行时,执行上下文切换需要很长时间(到CPU)。

理想情况下,您需要重新考虑您的设计并使用在线程池上运行的异步方法和延续。是否存在与ShowMembersOfAdministratorsGroup中的阻止调用等效的异步?那么你就不必创建那么多只阻塞网络I / O的线程。