程序员网站,商业网站源码免费下载,如何使用c#进行网站开发,广州冼村为什么有钱一、同步和异步
同步与异步是指访问数据的机制#xff0c;同步一般指主动请求并等待IO操作完成的方式。 异步则指主动请求数据后便可以继续处理其它任务#xff0c;随后等待IO操作完毕的通知。 同步和异步最大的区别就在于#xff1a;同步需要等待#xff0c;异步不需要等…一、同步和异步
同步与异步是指访问数据的机制同步一般指主动请求并等待IO操作完成的方式。 异步则指主动请求数据后便可以继续处理其它任务随后等待IO操作完毕的通知。 同步和异步最大的区别就在于同步需要等待异步不需要等待。 浏览器发送请求给服务器其有同步请求和异步请求两种方式接下来我们以浏览器发送请求为例进一步对同步与异步的理解进行说明。
1.1 同步请求
对于同步请求而言浏览器在发送一个请求之后需要等待服务器响应返回才能够发送下一个请求这一过程的示意图如下所示 同步请求存在着两个明显的缺陷
① 请求发出后必须要等待响应
比如当遇到请求阻塞网络延迟等情况时用户需要进行等待这样会导致用户体验效果差。
② 每次请求都需要重新加载整个页面
比如在访问某个页面时有的时候用户可能只需要请求获取页面某一部分内容的响应但是当用户发送请求后整个页面的所有内容都需要重新加载后再响应给用户这样同样会导致用户的体验较差。
1.2 异步请求
与同步请求相对发送异步请求不需要等待服务器响应随时可以发送下一次的请求减少了用户遇到请求阻塞、网络延迟时需要等待的时间。
同样以用户访问某个页面为例用户需要请求获取页面某一部分内容的响应如果用户发送的是异步请求那么服务器会根据请求对页面进行局部的刷新而不用每次请求都刷新整个页面异步请求可以提升用户的体验。 二、阻塞和非阻塞
阻塞与非阻塞是描述线程在访问某个资源时数据是否准备就绪的一种处理方式。当数据没有准备就绪时 阻塞线程持续等待资源中数据准备完成直到返回响应结果。 非阻塞线程直接返回结果不会持续等待资源准备数据结束后才响应结果。 从线程的角度考虑 当前线程被挂起不再抢夺CPU资源时 则称为线程被阻塞。线程阻塞后不能做其他操作只能等待。相对应的非阻塞意味着无须挂起当前线程可以去执行其他操作。 接下来我们进一步对阻塞与非阻塞进行解释。
2.1 阻塞
通俗来说阻塞就是把线程堵住了线程不能去干别的事。在阻塞情况下用户线程读取内核空间数据如果此时没有数据返回那么当前线程就会被堵住一直等到有数据返回后当前线程才会返回响应结果。
2.2 非阻塞
通俗来说非阻塞就是线程没有被堵住当前线程想干啥干啥。对于非阻塞情况用户线程读取内核空间数据不管此时有没有数据返回给线程当前线程都会直接返回响应结果而不会一直在原地等待数据。 三、小结归纳
① 阻塞与非阻塞是针对线程来说的阻塞可能发生在IO期间也可能发生在IO之前。 ② 同步与异步是针对IO操作来说的同步是用户线程一直盯着IO直到完成异步是用户线程在IO完成时会收到通知。