Может ли ThreadPool.QueueUserWorkItem выполняться в основном потоке?

Я пытаюсь решить странную проблему SL на Mac в многопоточном приложении. Мое приложение использует ThreadPool для постановки в очередь различных рабочих элементов. У меня есть метод HandleRequest это вызывается только через ThreadPool.QueueUserWorkItem(new WaitCallback(HandleRequest)),

Приложение работало очень медленно, поэтому я удаленно отладил из Windows и приостановил его, чтобы найти кучу потоков, застрявших в HandleRequest, потому что они ждали на ограниченном ресурсе. Это нормально, поскольку есть еще одна проблема, но я также заметил, что в основном потоке ожидал запрос HandleRequest. Как это может случиться? Я думал, что ThreadPool создает рабочие потоки в фоновом режиме и выполняет задачи на них.

Это происходит из-за того, что ThreadPool исчерпал рабочие потоки и, таким образом, использует вызывающий поток, чтобы попытаться выполнить метод обратного вызова?

0 ответов

Другие вопросы по тегам