Я использую пул потоков в моей службе Windows для выполнения параллельной обработки. Мои темы длинные. Каковы отрицательные моменты в моем дизайне?Недостатки использования ThreadPool для длинных потоков
ответ
Существует уже здесь ответ - Is it true that for long running processes it is better to do thread manually instead of threadpool?
Это верно. Пул потоков оптимизирован для небольших единиц работы, а вы можете вмешиваться в другие работы, удерживая пул потоков .
Мое эмпирическое правило состоит в том, что операция может занимать больше секунды, а не должно быть в потоке пула потоков. Вероятно, это довольно долго.
Хотя это недокументировано, если вы запустите задачу с TaskCreationOptions.LongRunning, тогда будет запущен новый поток, который будет запущен до .
Для большинства задач ввода-вывода существуют асинхронные версии фреймворков , которые вы действительно должны использовать. Они используют функции ядра и означают, что вы не будете блокировать нить.
Как всегда, я рекомендую прочитать бесплатную электронную книгу Джо Альбахари, за которой следует Совместное программирование Джо Даффи в Windows. Позднее 1000 страниц длинный, но полон полезных деталей.
Хотя использование потоков дает возможность сделать больше, каждый поток занимает часть вашего процессора и немного больше памяти. Если у вас есть поток для долговременной задачи, у него есть потенциал для того, чтобы threadpool мог занять этот поток на короткое время, чтобы предоставить место для других задач \ threads.
Лучше разделите этот поток на меньшие задачи, используя задачи async, и подождите, подождите, и другие параметры.
Эта ссылка здесь должна помочь вам немного дальше
- 1. Недостатки использования ThreadPool
- 2. использования ThreadPool
- 3. Signalr SQL scaleout: недостатки использования нескольких потоков?
- 4. ConfigureAwait (false), необходимый для потоков threadpool?
- 5. Требуется ли .BeginInvoke .EndInvoke для потоков Threadpool?
- 6. Количество доступных потоков в threadpool
- 7. Должны ли мы использовать пул потоков для длинных потоков?
- 8. Каковы недостатки использования неконтролируемых потоков в управляемой среде?
- 9. Это правильный случай использования Threadpool?
- 10. Threadpool QueueUserWorkItem без использования SetMaxThreads, GetMaxThreads
- 11. Использование ExecutorService/ThreadPool для простого списка переменных всегда активных потоков
- 12. Каковы недостатки и недостатки использования LOGO?
- 13. Периодические задачи в C# без использования ThreadPool
- 14. Каковы недостатки использования раскадровки
- 15. Недостатки использования sleep()
- 16. Недостатки использования jInternalFrame
- 17. Увеличить количество потоков ThreadPool в Monotouch?
- 18. Недостатки использования сжатия таблицы
- 19. Преимущества/недостатки использования timthumb.php?
- 20. Получение числа используемых потоков с ThreadPool
- 21. Ожидание подмножества потоков в Java ThreadPool
- 22. Недостатки использования тройной оператор
- 23. Недостатки использования HTTPS?
- 24. Каковы недостатки использования $ firebaseObject?
- 25. C# проверка threadpool и других потоков
- 26. C# Дождитесь окончания всех потоков в ThreadPool
- 27. awaitTermination в threadpool не завершает пул потоков
- 28. Недостатки использования SharedPreferences?
- 29. Недостатки использования date_trunc
- 30. Недостатки использования EOF?