显然,.NET 4.0中的 TaskFactory.StartNew 方法旨在替代 ThreadPool.QueueUserWorkItem (according to this post, anyway)。我的问题很简单:有人知道为什么吗?
TaskFactory.StartNew是否有更好的性能?它使用更少的内存吗?还是主要用于Task类提供的其他功能?在后一种情况下,StartNew的性能是否可能比QueueUserWorkItem差?

在我看来,StartNew实际上可能比QueueUserWorkItem占用更多的内存,因为它每次调用都会返回一个Task对象,我希望这样做会导致更多的内存分配。

无论如何,我很想知道哪种更适合高性能方案。

最佳答案

性能取决于……。如果您要执行许多并行任务,那么.net 4任务将执行得更好,并且为您提供更细粒度的控制(更强大的取消功能,同时等待多个任务的能力,创建父/子任务关系的能力,指定LongRunning,等等。等等。等等。)

此外,可以指定自己的TaskScheduler的功能意味着您可以根据需要自定义它。内置的任务计划程序比旧的ThreadPool更了解多核。

至于使用更多的内存。每个线程至少保留1MB的内存,用于存储任务对象的微小内存是无关紧要的。我真的认为这是您最后的担心。

08-18 00:37