Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asynchronous 后端的异步好处是什么?_Asynchronous - Fatal编程技术网

Asynchronous 后端的异步好处是什么?

Asynchronous 后端的异步好处是什么?,asynchronous,Asynchronous,我理解前端异步(某种UI)的好处。使用async,UI不会阻塞,用户可以在等待另一个操作执行时“单击”其他内容 但是在后端进行异步编程有什么好处呢?主要的好处是后端可能会有各种缓慢的操作,这可以防止其他请求同时使用cpu。这些操作可以是:1。数据库操作2。文件操作3。对其他服务(服务器)等的远程调用。您不希望在这些操作进行时阻塞cpu。首先,一次处理多个请求有好处。ASP.net或django等框架为每个请求创建新(或重用现有)线程 如果您指的是来自特定请求线程的异步操作,那就更复杂了。在大多数

我理解前端异步(某种UI)的好处。使用async,UI不会阻塞,用户可以在等待另一个操作执行时“单击”其他内容


但是在后端进行异步编程有什么好处呢?

主要的好处是后端可能会有各种缓慢的操作,这可以防止其他请求同时使用cpu。这些操作可以是:1。数据库操作2。文件操作3。对其他服务(服务器)等的远程调用。您不希望在这些操作进行时阻塞cpu。

首先,一次处理多个请求有好处。ASP.net或django等框架为每个请求创建新(或重用现有)线程

如果您指的是来自特定请求线程的异步操作,那就更复杂了。在大多数情况下,它根本没有帮助,因为生成新线程的开销很大。但是,我们有一些东西,比如C#中的调度器,它们非常有用。当正确使用时,它们释放了大量通常浪费在等待上的CPU时间

例如,将图片发送到服务器。您的请求将在新线程中处理。这个线程可以自己做任何事情:上传图片并保存到磁盘,然后更新数据库。 或者,您可以写入磁盘,同时更新数据库。首先完成的线程是我们在这里的重点。在没有调度程序的情况下使用时,它开始旋转循环,检查另一个线程是否完成,这需要CPU时间。如果您使用调度程序,它将释放该线程。当其他任务完成时,它可能会使用另一个预处理的thred来完成对您的请求的处理


这种情况确实让人觉得不值得大惊小怪,但很容易想象更多复杂的任务,可以在同一时间完成,而不是依次完成。最重要的是,调度程序非常智能,可以使所需的总时间最低,CPU使用率适中。

好吧,并行运行,在io操作时不阻塞CPU,等等。请评论为什么投票失败?以充分利用您的全部计算资源。@joe很棒的评论。想详细说明一下吗?看看关于多线程的文档。正如Florian所说,async实际上是使用
task
打开新线程,以并行异步处理代码。例如,您有一个8核cpu,一个单线程程序只允许您在它的一个核心上进行处理。多线程可以允许您并行使用多核。当然,机制在实践中并不是那么简单。如果你想知道细节,就看书吧。