gpt4 book ai didi

.net - .Net 4.0 Tasks 是否应该始终是多线程应用程序的首选方法?

转载 作者:行者123 更新时间:2023-12-04 15:14:52 25 4
gpt4 key购买 nike

我正在阅读 Task Parallel Library并且文章说:

In the .NET Framework 4, tasks are the preferred API for writing multi-threaded, asynchronous, and parallel code



但它也说他们在幕后使用了 ThreadPool。我难以弄清楚的是,任务是否应该只在您使用 ThreadPool 时使用(因此“线程与任务”将等同于“线程与线程池”),或者 Microsoft 是否打算使用任务任何需要多线程的地方,而不考虑“线程与线程池”困境所固有的考虑。

那么,是否应该在需要多线程的地方使用 Tasks?

最佳答案

使用任务的设计优势是您将线程的本质交给运行时,这大概可以使用错误更少、更优化的解决方案来完成线程任务。我知道某些基于任务的范例,例如 PLINQ,允许您提示运行时应该采用哪种策略,以便可以直接处理“到线程池或不到线程池”的问题。

切换到此模型类似于切换到托管 GC ed 语言与需要您清理自己的内存的语言。总会有支持后者的论据,但垃圾收集现在变得如此优化,以至于它实际上不是问题。理想情况下,任务的运行时切换机制会不断发展并变得更好。因此,理论上,为 .NET 4 编写和编译的应用程序可以通过更好的运行时实现而变得更快,而无需进一步重新编译。此外,众所周知,线程代码很难正确处理,因此任何隐藏这些细节的机制对程序员都有好处。

这些好处是否大于潜在的损害,例如运行时不能很好处理的边缘情况,应该逐案考虑。不过,我当然会尽量不在这里过早优化。

关于.net - .Net 4.0 Tasks 是否应该始终是多线程应用程序的首选方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8219693/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com