簡體   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