У нас есть приложение с некоторыми ограничениями времени, скажем, что нам нужно выполнить действие каждые 500 мс, это своего рода сторожевой таймер, поэтому, если мы не отправим сообщение до 500 мс происходят плохие вещи.Как избежать узкого места ThreadPool, когда у него закончились потоки
Приложение использует довольно сильно ThreadPool, и эта сторожевая вещь взаимодействует с ThreadPool.
Мы обнаружили, что на некоторых низкопроизводительных машинах, а иногда, когда мы помещаем в очередь новую работу, для ее выполнения требуется около 800 мс, поэтому сторожевой огонь срабатывает. Мы предполагаем, что это связано с тем, что ThreadPool заканчивается из потоков/создает новые.
Есть ли способ избежать этого, заставляя ThreadPool создавать потоки заранее или в другом потоке, чтобы сторожевому таймеру не приходилось ждать, пока ThreadPool сможет выполнить запрос?
Да, есть способы. Тем не менее, почему в первую очередь вы столкнулись с потоками ThreadPool? Может быть, стоит посмотреть, где вы можете использовать асинхронный ввод-вывод вместо блокировки ввода-вывода? – Luaan
Является ли этот «сторожевой таймер» работает на его выделенной теме? – Magnus
@Magnus: Он работает по выделенному потоку, а не из threadpool, но он ждет, пока он не получит сообщение, исходящее из потока threadpool. –