2010-08-25 3 views
1

Мой сценарий: у меня есть файл, который медленно заполняется в течение часа или двух (mp3, видео и т. Д.). По мере заполнения этого файла многие пользователи подключаются к серверу для получения новых данных, поскольку они добавляются на сервер.Какое правильное использование пула приложений ASP.NET?

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

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

Большое спасибо, Ади

ответ

1

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

Если вы идете с Thread, то у вас будет прямой контроль над всеми активными темами, чтобы вы могли одновременно принимать больше посетителей.

0

F # имеет функцию под названием Asynchronous Workflows, которая идеально подходит для такого рода вещей. Когда ваш код ожидает внешнего источника данных, поток возвращается в пул потоков для других целей. Когда новые данные поступают, рабочий процесс получает поток из пула и использует его для возобновления вашего кода, где вы остановились. Таким образом, вам никогда не придется связывать нить, которая ничего не делает, кроме ожидания ввода-вывода.

Возможно, излишне, чтобы изучить новый язык только для этого использования, но F # выстраивается на любой другой язык CLR, когда речь заходит о асинхронном вводе-выводе, и это тоже очень забавный язык.

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