簡體   English   中英

該程序會被視為異步程序嗎?

[英]Would this program be considered asynchronous?

假設我有一個簡單的程序,例如

public static main(string[] args)
{
    Task<int> hotTask = Task<int>.Run(() => SomethingThatRunsInBackgroundAndReturnsAnInt());
    DoIndependentWork();
    hotTask.Wait(); 
    Console.WriteLine(hotTask.Result);
}

盡管它運行不需要在下一個工作單元( DoIndependentWork() )開始和完成之前完成的后台線程, DoIndependentWork()技術上講,這在技術上是“同步的”嗎? 我在互聯網上的任何地方都找不到很好的技術定義。

據此: 異步與同步執行的真正含義是什么?

當您同步執行某項任務時,您需要等待其完成才能繼續執行其他任務。 當您異步執行某些操作時,您可以在完成任務之前繼續執行其他任務。

在您的情況下,您執行SomethingThatRunsInBackgroundAndReturnsAnInt()而不必等待任務結束,而是執行另一個函數,這意味着它是一個異步程序

是的,但從技術上講,不是

也許這是一個小問題,但我要指出您的程序使用異步操作,但本身不是異步的。 這是因為在程序完成處理之前,程序的main方法將不會返回。

當我們談論異步方法時,我們並不是在談論使用多個線程的方法。 我們正在談論一種幾乎在工作完成之前立即返回的方法。 同樣,對於一個程序,我們不是在談論使用多個線程的程序,而是要在工作完成之前立即返回的程序。

Windows Service是異步程序的一個示例。 操作系統將調用服務的OnStart方法,該方法幾乎立即返回。 同時,服務維護另一個異步執行主要工作的線程。

因此,您的程序不符合定義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM