Re[15]: много Thread или ThreadPool
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 24.02.18 08:02
Оценка: 2 (1)
Здравствуйте, 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); ); // выполнимм задачу и добавим признак свободной задачи в очередь
}

Писал без студии
и солнце б утром не вставало, когда бы не было меня
Отредактировано 24.02.2018 9:59 Serginio1 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.