【发布时间】:2011-04-04 18:45:01
【问题描述】:
我将线程创建为
for (int i = 0; i < threadCount; i++)
{
Searcher src = new Searcher(i, this);
threads[i] = new Thread(new ThreadStart(src.getIpRange));
threads[i].Name = string.Format(i.ToString());
}
foreach (Thread t in threads)
{
t.Start();
}
使用 threadCount(= 100, 150, 255 等...) 但我不知道有多少线程在工作。执行时间。
我想控制所有线程何时完成工作。并给我一条消息,例如“所有线程都已死,作业已完成......” 比如 backgroundWorker 的 RunWorkerCompleted 事件
【问题讨论】:
-
我很难想象一个应用程序有 255 个相同的线程是最佳的。请记住,在任何给定时间可以在系统范围内运行的最大线程数 = 目标硬件中独立 CPU 内核的数量。 fwiw 根据我的经验(Win XP SP2),线程创建在单个进程中大约 120 之后失败。这是在一个测试应用程序中实现的,每个基于套接字的应用程序客户端一个线程。我不可能那样实现实际的生产代码。
-
我正在开发一个网络应用程序,因此我的线程花费了很多时间。我认为这不是 cpu 的过载
标签: c# .net multithreading threadpool thread-state