Task vs Thread, сильная задержка Task

185
28 апреля 2018, 15:35

Почему при работе с Task происходят такие задержки?

using System;
using System.Threading;
using System.Threading.Tasks;
class Program
{
  static void SomethingLong()
  {
    Thread.Sleep(30000);
  }
  static void Main(string[] args)
  {
    for (int i = 0; i < 20; ++i)
      Task.Run(() => { Console.Write("="); SomethingLong(); });
    for (int i = 0; i < 20; ++i)
      (new Thread(() => { Console.Write("-"); SomethingLong(); })).Start();
    for (int i = 1; i <= 20; ++i)
    {
      Thread.Sleep(1000);
      Console.Write(i.ToString());
    }
  }
}

Answer 1

Потому что задачи используют пул потоков. Если при создании задачи в пуле не осталось потоков - то CLR выбирает создавать новый или ставит задачу в очередь.

Если заведомо известно что задача будет выполняться долго и другие не должны ее ждать - можно использовать метод Task.Factory.StartNew с опцией TaskCreationOptions.LongRunning.

READ ALSO
Как выровнять содержимое button по вертикали если использовался float?

Как выровнять содержимое button по вертикали если использовался float?

Заметил что у кнопок со свойством float содержимое немного вниз сдвинуто vertical-align и line height не работаютКак выровнять?

173
Как лучше сверстать блоки разной высоты на Bootstrap?

Как лучше сверстать блоки разной высоты на Bootstrap?

Прошу прощения за мой дилетантский вопрос:

226