【发布时间】:2019-03-11 16:57:02
【问题描述】:
我通过以下方式创建和启动任务:
Task task = new Task(() => controller.Play());
task.Start();
由于某种原因,有时任务开始延迟大约 7-10 秒。 我并行使用 6 个任务,最大任务数为 32767,可用 32759 这是我在创建任务之前记录的内容,因此不可能达到最大任务数。我在任务应该执行的 controller.Play() 方法的第一行代码写日志,所以没有锁或任何可以让任务等待的东西。
【问题讨论】:
-
您如何以及在何处测量延迟?也许
controller.Play电话有启动成本。 -
旁注:建议开始任务的方式是使用
Task.Run() -
我已经调整它以使用 Run() 而不是 Start() 仍然是同样的问题。我意识到程序在另一个线程上从 10MB 大的 JSON 文件反序列化,这大约需要 10 秒,一旦完成,调用 controller.Play() 的任务就会启动。我试图删除那些从 json 反序列化的代码行,然后根本没有延迟。我也尝试让 controller.Play() 为空函数,一旦从 json 反序列化完成,它仍然会被调用。