Performance 一个程序如何同时为多个用户服务? 如果我们考虑为一个用户服务的桌面应用程序,它可能是直观的。但是,例如,在web应用程序中,我们编写一个程序,从数据库中获取数据并将其显示到用户浏览器中,当两个用户或100多个用户同时请求相同的程序、相同的数据时,会发生什么情况

Performance 一个程序如何同时为多个用户服务? 如果我们考虑为一个用户服务的桌面应用程序,它可能是直观的。但是,例如,在web应用程序中,我们编写一个程序,从数据库中获取数据并将其显示到用户浏览器中,当两个用户或100多个用户同时请求相同的程序、相同的数据时,会发生什么情况,performance,concurrency,parallel-processing,sequential,Performance,Concurrency,Parallel Processing,Sequential,如何以及通过什么来处理这个问题,它“看起来”如何,幕后发生了什么使之成为可能?在我所知甚少的情况下,我想象程序每次被调用时都会运行一次,用户必须依次等待?多线程的概念从何而来,或者与此无关?(编辑:我现在知道这叫做并行计算,而不是并发或顺序计算) 谢谢你抽出时间。 (顺便说一句,我不知道如何标记这个问题,任何建议都将不胜感激!)在大多数web框架中,这是通过请求不共享任何数据来实现的。该框架负责为每个请求分别实例化所有必需的对象 从概念上讲,应用程序只是一个获取请求数据并输出响应数据的函数。因此

如何以及通过什么来处理这个问题,它“看起来”如何,幕后发生了什么使之成为可能?在我所知甚少的情况下,我想象程序每次被调用时都会运行一次,用户必须依次等待?多线程的概念从何而来,或者与此无关?(编辑:我现在知道这叫做并行计算,而不是并发或顺序计算)

谢谢你抽出时间。
(顺便说一句,我不知道如何标记这个问题,任何建议都将不胜感激!)

在大多数web框架中,这是通过请求不共享任何数据来实现的。该框架负责为每个请求分别实例化所有必需的对象

从概念上讲,应用程序只是一个获取请求数据并输出响应数据的函数。因此,如果您的应用程序是一个简单的迎宾应用程序,那么函数如下所示:

string GetResponse(string request) => "Hello " + request;
在这里,您可以直观地看到,多个并发用户访问此函数将是完全安全的,因为这些用户不会共享任何状态

通常,不会有任何全局变量,因为这些变量是共享的。如果有全球性的,必须非常小心,确保安全


编写数据库是为了使多个并发请求能够安全地交互。

这称为“数据库并发”——我建议您对此进行研究。无论是桌面应用程序还是web应用程序,真正的功能都是由数据库提供的。如果打开一个桌面应用程序的多个实例,情况是否相同?它们可以同时运行吗?你知道有什么书可以了解更多的细节吗?是的,那也差不多。有一个区别是,由于使用多个进程,默认情况下这些进程是相当隔离的。在服务器上,必须在代码中按约定进行隔离。我不能推荐书。相反,只需抓取一些web框架并尝试一下即可。您可以通过添加一个全局变量来有意地打断它。C#非常容易入门。这是一种有趣的语言和平台。VisualStudio也有免费版本。