2009-08-19 2 views
1

Я пытаюсь оптимизировать код для приложения, которое мы в настоящее время разрабатываем. Текущая реализация вызывает создание потока для непрерывного опроса сервера для новых данных. Если новые данные обнаружены, поток затем генерирует несколько потоков (созданных каждый раз) для извлечения данных.C# Реальное преимущество Threadpooling

Я читал относительно thread pooling и был любопытным, изменив код, чтобы использовать поток, приведет к заметной разнице.

+0

Я думаю, что моя первоначальная публикация, возможно, была смущена. Исходный длинный поток будет постоянно создавать множество потоков каждый раз, когда он опросит сервер и появятся новые данные. Мой вопрос, касающийся оптимизации, заключается в том, заметила ли я какую-либо выгоду, превратив эти непрерывные множественные порожденные потоки в threadpool, или же усиление было бы незначительным. – Setheron

+0

Почему вы беспокоитесь о размножении нескольких потоков? Почему бы просто не сделать это из долговременной опроса? –

+0

Это зависит от того, как долго каждая нить выполняется, и как часто они появляются. –

ответ

6

Если вы создали один длинный поток для проведения опроса, вы не заметите большой разницы. По общему признанию, у вас, вероятно, есть сон в данный момент, поэтому у вас есть еще один поток, который вам нужен в течение долгого времени (по сравнению с решением на основе таймера), но это в основном все в порядке.

Бассейны с резьбой особенно хороши, когда у вас много короткоживущих операций. Запуск потока не приходит бесплатно, и накладные расходы довольно большие, если фактическая работа тривиальна. Пулы потоков просто удерживают фактический поток, висящий вокруг, ожидая рабочего элемента. Затем они могут выполнять эти рабочие элементы с очень небольшими накладными расходами.

С одной долговременной задачей накладные расходы незначительны по сравнению с временем, затраченным на выполнение самой задачи, поэтому вы не заметите разницы.

Смежные вопросы