Я пытаюсь понять идею неблокирующего веб-сервера, и кажется, что мне что-то не хватает.Как работает неблокирующий веб-сервер?
Я могу понять, что есть несколько причин для "блок" веб-запроса (psuedocode):
ЦП
строка on_request (Arg)
{
DO_SOME_HEAVY_CPU_CALC
возвращение «сделано «;
}И.О. связаны
строку on_request (Arg)
{
DO_A_CALL_TO_EXTERNAL_RESOURCE_SUCH_AS_WEB_IO
возвращение "сделано";
}сна
строка on_request (Arg)
{
сна (VERY_VERY_LONG_TIME);
возвращение «сделано»;
}- являются все три могут извлечь выгоду из неблокирующая сервера?
- Как ситуация, которая приносит пользу от неблокирующего веб-сервера, действительно делает это? Я имею в виду, глядя на документацию сервера Tornado, кажется, нравится «бесплатно». Я знаю, что поток можно спать и ждать сигнала от операционной системы (по крайней мере, в Linux), - это смысл «освобождения» потока? это какая-то более высокая реализация уровня ? что-то, что на самом деле создает новый поток , который ждет нового запроса вместо «спящего»?
- Я что-то пропустил?
Благодаря
спасибо за подробное объяснение! – user3197748
Возможно, вы захотите принять ответ, чтобы он не показывался как «без ответа», когда люди смотрят, чтобы ответить на другие вопросы :) спасибо! –