繁体   English   中英

.NET 4.5中的任务与线程

[英]Tasks vs Threads in .NET 4.5

.Net 4 ,有一个新的Tasks功能,我想知道我是否可以通过.Net 4.5 Async/Await依赖它来Async/Await执行所有要使用的所有方法,或者在某些情况下我将必须使用单独的Thread ,特别是我已阅读Task.Run使用ThreadPool异步执行该方法。

结论:将Async/AwaitTasks结合使用可以使我摆脱使用Threads吗?

如果您指定TaskCreationOptions.LongRunning选项(也有等效的延续),则该任务将不使用线程池线程,而将使用常规Thread 从技术上讲,这是一个实现细节,不在规范中,但这并不是完全不合理的假设。

鉴于此,您应该能够使用Task直接执行与Thread一起执行的任何操作。

某个人可能想直接使用Thread的主要情况是,创建您自己的并行库,假设您选择不将其构建在TPL之上。 尽管在业务应用程序的上下文中它并不重要,但是在创建自己的库时,您可能需要访问特定Thread对象的基础详细信息,或者您可能希望避免使用Tasks的开销(虽然很小)。

然后,当然,如果您尚未使用.NET 4.0,则不能选择使用Task

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM