Re[13]: много Thread или ThreadPool
От: RushDevion Россия  
Дата: 23.02.18 19:53
Оценка:
A>Одним потоком через new Thread живущий на протяжении работы приложения бегаем по базе/очереди и получаем данные для дальнейшей обработки.
A>Далее через Task.Factory.StartNew запускаем таски для выполнения полезных действий.
A>Лимитируем все это семафором

Че-т все равно смутно.
Что то типа такого?
while(true) {
  var workItem = getWorkItem();
  Task.Factory.StartNew(()=>{
    m_Semaphore.WaitOne();
    // Proces...
    m_Semaphore.Release();
  });
}

Если да, то скорость генерации данных как-то лимитируется?
Потому что если нет, есть риск получить классический over-subscription:
данных поступает все больше и больше (при фиксированной скорости потребления).
ThredPool начинает наращивать количество тредов. А данных все больше и больше
Пул растет как бешеный. В итоге все время тратится на переключение контекстов вместо реальной работы.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.