Информация об изменениях

Сообщение Re[15]: много Thread или ThreadPool от 24.02.2018 8:02

Изменено 24.02.2018 9:59 Serginio1

Re[15]: много Thread или ThreadPool
Здравствуйте, alexsoff, Вы писали:

RD>>Если да, то скорость генерации данных как-то лимитируется?

A>лимитируется как раз скорость потребления.

Если хочешь свой шедулер, то посмотри на асинхронную очеред
https://docs.microsoft.com/ru-ru/dotnet/standard/asynchronous-programming-patterns/consuming-the-task-based-asynchronous-pattern

смотри AsyncProducerConsumerCollection и метод Add
Re[15]: много Thread или ThreadPool
Здравствуйте, alexsoff, Вы писали:

RD>>Если да, то скорость генерации данных как-то лимитируется?

A>лимитируется как раз скорость потребления.

Если хочешь свой шедулер, то посмотри на асинхронную очеред
https://docs.microsoft.com/ru-ru/dotnet/standard/asynchronous-programming-patterns/consuming-the-task-based-asynchronous-pattern

смотри AsyncProducerConsumerCollection и метод Add

Что бы обойтись без объектов синхронизации можно сделать 2 очереди
1. Очередь задач на выполнение, где можно регулировать в зависимости от максимальной длины очереди
2. Очередь свободны задач.

for(var i=1; i<MaxCountTask; i++)
queueFreeTask.Add(1);

 while(true)
{
 Action act= await queue1.Take(); // возьмем метод на выполнение из первой очереди

/// Посмотрим есть ли свободные задачи
 var i= await queueFreeTask.Take();

  Task.Run(() => act(); queueFreeTask.Add(1); ); // выполнимм задачу и добавим признак свободной задачи в очередь
}

Писал без студии