我理解异步在前端(某种UI)上的好处。使用异步,UI不会阻塞,用户可以在等待其他操作执行时“点击”其他内容。
但是后端的异步编程有什么好处?
答案 0 :(得分:1)
主要好处是后端可能存在各种慢速操作,这可能会阻止其他请求同时使用cpu。这些操作可以是:1。数据库操作2.文件操作3.远程调用其他服务(服务器)等。在这些操作正在进行时,您不想阻止cpu。
答案 1 :(得分:1)
首先,一次处理多个请求的好处。像ASP.net或django这样的框架为每个请求创建新的(或重用现有的)线程。
如果您的意思是来自特定请求的线程的异步操作,那就更复杂了。在大多数情况下,由于产生新线程的开销,它根本没有帮助。但是,我们在C#中有像Scheduler这样的东西,这对我们很有帮助。正确使用后,它们可以节省大量通常在等待时浪费的CPU时间。
例如,您将图片发送到服务器。您的请求是在新线程中处理的。这个线程可以完成它自己的所有工作:将图片上传并保存到磁盘,然后更新数据库。 或者,您可以写入磁盘并同时更新数据库。首先完成的线程是我们的重点。在没有调度程序的情况下使用时,它开始旋转循环,检查是否完成了另一个线程,这需要CPU时间。如果使用调度程序,则释放该线程。当其他任务完成后,它可以使用另一个预先创建的thred来完成对请求的处理。
这种情况确实让它看起来不值得大惊小怪,但很容易想象更复杂的任务,这可以在同一时间而不是顺序完成。最重要的是,调度程序非常智能,可以使所需的总时间最短,CPU使用率也适中。