Kic*_*Kim 3 c# multithreading asynchronous async-await
我测试了这样的控制台应用:
class Program
{
static void Main(string[] args)
{
Test();
Console.WriteLine("C");
Console.ReadLine();
}
static async void Test()
{
Console.WriteLine("A");
await Task.Delay(2000);
Console.WriteLine("B");
}
}
Run Code Online (Sandbox Code Playgroud)
该应用程序在2秒后立即打印A和C然后打印B. 看起来很好.但我读了一篇关于异步/等待"没有线程"的文章(http://blog.stephencleary.com/2013/11/there-is-no-thread.html),它说async/await不会创建额外的线.
回到我的控制台应用程序,我认为主线程在Console.ReadLine()上是blokced,所以在Console.ReadLine()之前不会执行Test()(Console.WriteLine("B")中的剩余代码.完成.但实际结果不同,无论主线程阻塞如何,都会执行剩余代码.
我想知道await的作用就像CPU中断一样,所以指令指针移动到剩余代码(Console.WriteLine("B");)并在执行后移回到中断位置(Console.ReadLine();)?