一个程序如何同时服务于多个用户?
How can a program serve several users at the same time?
如果我们考虑为一个用户提供服务的桌面应用程序,这可能很直观。但是例如,在我们编写一个从数据库中获取某些内容并将其显示到用户浏览器的 Web 应用程序中,当两个用户或 100 多个用户同时请求相同的程序、相同的数据时会发生什么?
这是如何以及通过什么来处理的,它是如何处理的 "look like",幕后发生了什么使这成为可能?以我很少的知识,我想程序每次按用户必须依次等待的顺序调用时运行一次?多线程的概念从何而来,或者与此无关? (编辑:我现在知道这叫做并行计算,而不是并发或顺序)
感谢您的宝贵时间。
(顺便说一句,我不确定如何标记这个问题,任何建议将不胜感激!)
在大多数网络框架中,这是通过让请求不共享任何数据来完成的。该框架负责为每个请求分别实例化所有必要的对象。
从概念上讲,应用程序只是一个获取请求数据并输出响应数据的函数。因此,如果您的应用程序是一个简单的欢迎应用程序,那么函数如下所示:
string GetResponse(string request) => "Hello " + request;
从这里可以直观地看出,多个并发用户访问该功能是绝对安全的,因为用户不会共享任何状态。
通常不会有任何全局变量,因为它们是共享的。如果有全局变量,必须非常小心以确保其安全。
编写数据库是为了让多个并发请求可以安全交互。
如果我们考虑为一个用户提供服务的桌面应用程序,这可能很直观。但是例如,在我们编写一个从数据库中获取某些内容并将其显示到用户浏览器的 Web 应用程序中,当两个用户或 100 多个用户同时请求相同的程序、相同的数据时会发生什么?
这是如何以及通过什么来处理的,它是如何处理的 "look like",幕后发生了什么使这成为可能?以我很少的知识,我想程序每次按用户必须依次等待的顺序调用时运行一次?多线程的概念从何而来,或者与此无关? (编辑:我现在知道这叫做并行计算,而不是并发或顺序)
感谢您的宝贵时间。 (顺便说一句,我不确定如何标记这个问题,任何建议将不胜感激!)
在大多数网络框架中,这是通过让请求不共享任何数据来完成的。该框架负责为每个请求分别实例化所有必要的对象。
从概念上讲,应用程序只是一个获取请求数据并输出响应数据的函数。因此,如果您的应用程序是一个简单的欢迎应用程序,那么函数如下所示:
string GetResponse(string request) => "Hello " + request;
从这里可以直观地看出,多个并发用户访问该功能是绝对安全的,因为用户不会共享任何状态。
通常不会有任何全局变量,因为它们是共享的。如果有全局变量,必须非常小心以确保其安全。
编写数据库是为了让多个并发请求可以安全交互。