Код Task.Run () выполняется асинхронно? - PullRequest
0 голосов
/ 22 сентября 2018

Я определил этот код блока.Может кто-нибудь сказать мне, если этот код асинхронный или параллельный ?Этот блочный код всего лишь пример.Он создает четыре потока и в конце ожидает завершения всех потоков.

public Form1()
    {
        InitializeComponent();

        var t1 = Task.Run(() =>
        {
            GetSum();
        });

        var t2 = Task.Run(() =>
        {
            GetSum();
        });

        var t3 = Task.Run(() =>
        {
            GetSum();
        });

        var t4 = Task.Run(() =>
        {
            GetSum();
        });

        Task.WaitAll(t1, t2, t3, t4);
    }

    private int GetSum()
    {
        int sum = 0;

        for (int i = 0; i < int.MaxValue; i++)
        {
            sum += i;
        }

        return sum;
    }

1 Ответ

0 голосов
/ 23 сентября 2018

Прежде всего, задача не создает поток напрямую.Задача обрабатывает потоки через механизм ThreadPool.Это асинхронный.Это связано с тем, что статический метод Task.Run () возвращает вызывающей стороне работу, поставленную в очередь для выполнения в ThreadPool.

...