小编Net*_*rtz的帖子

.NET Framework 和 .NET Core 之间的线程池差异、线程池饥饿

在尝试将工作代码从 .Net Framework 4.6.1 传递到 .Net Core 3.1 时,我偶然发现了一个意外行为

这是代码的简化:

static  void Main(string[] args)
{
    for (int i = 0; i < 20; i++)
    {
        ThreadPool.QueueUserWorkItem(o =>
        {
            Console.Write($"In, ");
            RestClient restClient = new RestClient($"http://google.com");
            RestRequest restRequest = new RestRequest();
            var response = restClient.Get(restRequest);

            Console.Write($"Out, ");
        });
    }

    Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)

作为多线程工作的结果,控制台上的预期输出是“In”列表,然后是混合的“In”和“Out”,最后是一些“Out”。这在 .Net Framework 上按预期工作。像这样的东西:

In, In, In, In, In, In, In, In, In, In, In, In, In, In, In, Out, In, Out,
In, Out, In, Out, In, Out, In, Out, …
Run Code Online (Sandbox Code Playgroud)

c# multithreading threadpool

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

标签 统计

c# ×1

multithreading ×1

threadpool ×1