我通过以下方式创建和启动任务:
Task task = new Task(() => controller.Play());
task.Start();由于某些原因,有时任务开始时会有大约7-10秒的延迟。我并行使用6个任务,最大任务数是32767,可用32759,这是我在创建任务之前记录的,所以不可能达到最大任务数。我在任务应该执行的controller.Play()方法的第一行代码中写入日志,所以没有锁或任何可能使任务等待的东西。
发布于 2019-03-11 16:57:02
长时间运行的任务,比如需要10秒的100MB反序列化,应该以long-running tasks身份运行:-)
根据当前的实现,长时间运行的任务总是在专用线程上运行,并且它们不会给线程池带来压力。
在您的例子中,您可能只有两个任务-反序列化和播放器。TaskScheduler的工作假设是任务是短暂的,在这种情况下,它显然会安排“播放器”任务在“反序列化”任务之后运行。
https://stackoverflow.com/questions/55073381
复制相似问题