[英].NET async Main method thread
我只是想知道在沒有SynchronizationContext
(例如控制台)的應用程序中, async static Main(args)
是如何實現的。 是在任何await
之前的主要方法的開始
線程池線程,CLR 本身有一個專用線程,它將Main
調用排隊到線程池並同步等待它完成?
或者
它是一個專用的啟動線程,它被編譯成一個特殊的 state 機器,在每次等待時同步阻塞線程。 或者甚至可能所有的await
組合成一個, main
線程等待這個組合任務完成?
async static Task Main
方法實際上只生成一個入口點,如下所示:
public static void GeneratedEntryPoint(string[] args)
{
Main(args).GetAwaiter().GetResult();
}
所以就像普通的同步Main
方法一樣,它在沒有同步上下文的線程中啟動。 這意味着任何延續都在線程池線程上執行。 但是初始線程(將執行任何代碼,直到第一個需要調度延續的await
表達式)本身不是線程池線程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.