我有一个针对 .NET 4.0 TPL 程序员的问题。我创建了这个 TPL 和 ThreadPool 压力测试器,在其中运行 X 个测试,每个测试执行 Y 个任务,完成后,它继续进行下一个测试。
我遇到的问题是,如果单个测试启动 100 个任务,则以下测试将添加更多任务等等,给我留下大量线程。
(我拥有的线程数取自资源监视器)。
伪代码:
while (tasksLeftToRun != 0)
{
var nextTask = new Task(new Action(()=>
{
Thread.Sleep(20);
}), cancellationToken);
nextTask.Start();
nextTask.ContinueWith((t) =>
{
//...
},TaskScheduler.Default);
tasksLeftToRun--;
}
应用程序完成测试后大约 15 秒,线程数下降到 ~7。
谢谢!