簡體   English   中英

.NET async 主方法線程

[英].NET async Main method thread

我只是想知道在沒有SynchronizationContext (例如控制台)的應用程序中, async static Main(args)是如何實現的。 是在任何await之前的主要方法的開始

  1. 線程池線程,CLR 本身有一個專用線程,它將Main調用排隊到線程池並同步等待它完成?

    或者

  2. 它是一個專用的啟動線程,它被編譯成一個特殊的 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.

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