1

同期メソッドで TaskCompletionSource の複数のインスタンスをループすると、5 つを超えるプログラムの実行が遅くなりますが、非同期メソッドではこの問題はありません。

これは問題のあるコードです 同期方式を使用すると、実行が遅くなり、約 1 秒で 1 つ作成されます

Parallel.For(1, 100, (index) =>
{
    System.Console.WriteLine("start:");
    var t = new TaskCompletionSource<string>();
    count++;

    System.Console.WriteLine("end:" + count + "\n");
    t.Task.Wait();
    System.Console.WriteLine("ended:");
});

これは問題のないコードです,非常に高速に実行します

Parallel.For(1, 100, async (index) =>
{
    System.Console.WriteLine("start:");
    var t = new TaskCompletionSource<string>();
    count++;

    System.Console.WriteLine("end:" + count + "\n");
    await t.Task;
    System.Console.WriteLine("ended:");
});
4

1 に答える 1