小编Eza*_*Eza的帖子

ThreadPool线程什么时候被释放回ThreadPool?

任何人都可以准确地解释(或有资源解释)ThreadPool 线程何时被释放回 ThreadPool?这是一个小示例程序(Dotnet fiddle:https ://dotnetfiddle.net/XRso3q )

    public static async Task Main()
    {
        Console.WriteLine("Start");
        var t1 = ShortWork("SW1");
        var t2 = ShortWork("SW2");
        await Task.Delay(50);
        var t3 = LongWork("LW1");
        Console.WriteLine($"After starting LongWork Thread={Thread.CurrentThread.ManagedThreadId}");
        await Task.WhenAll(t1, t2);
        await t3;
        Console.WriteLine("Done");
    }
    
    public static async Task ShortWork(string name)
    {
        Console.WriteLine($"SHORT Start {name} Thread={Thread.CurrentThread.ManagedThreadId}");
        await Task.Delay(500);
        Console.WriteLine($"SHORT End {name} Thread={Thread.CurrentThread.ManagedThreadId}");
    }
    
    public static async Task LongWork(string name)
    {
        Console.WriteLine($"LONG Start {name} Thread={Thread.CurrentThread.ManagedThreadId}");
        await Task.Delay(2500);
        Console.WriteLine($"LONG End {name} Thread={Thread.CurrentThread.ManagedThreadId}");
    }
Run Code Online (Sandbox Code Playgroud)

输出:

Start
SHORT Start SW1 …
Run Code Online (Sandbox Code Playgroud)

c# asynchronous async-await

1
推荐指数
1
解决办法
341
查看次数

标签 统计

async-await ×1

asynchronous ×1

c# ×1