Как программа может обслуживать нескольких пользователей одновременно? - PullRequest
0 голосов
/ 24 августа 2018

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

Как и с чем это связано, как это «выглядит», что происходит за кулисами, чтобы сделать это возможным? С моим очень небольшим знанием я представляю, что программа запускается один раз для каждого вызова в последовательности, в которой пользователям приходится ждать по очереди? Откуда приходит понятие многопоточности или оно здесь неактуально? (Изменить: теперь я знаю, что это называется параллельными вычислениями, а не параллельными или последовательными)

Спасибо за ваше время. (Кстати, я не уверен, как пометить этот вопрос, любое предложение будет оценено!)

1 Ответ

0 голосов
/ 24 августа 2018

В большинстве веб-фреймворков это делается за счет того, что запросы не делятся никакими данными. Фреймворк заботится о создании всех необходимых объектов отдельно для каждого запроса.

Концептуально приложение - это просто функция, которая принимает данные запроса и выводит данные ответа. Так что, если ваше приложение является простым приложением, функция выглядит так:

string GetResponse(string request) => "Hello " + request;

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

Обычно глобальных переменных не будет, поскольку они будут общими. Если есть глобальные переменные, нужно быть очень осторожным, чтобы сделать это безопасным.

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

...