同步和异步的区别?

博客介绍了同步和异步的概念及特点。同步是服务器处理完用户请求后再通知用户,会导致用户等待时间长、服务器压力大、体验差;异步则是先反馈执行成功,再慢慢写入服务器,能减轻服务器压力,提升用户体验。

同步:同步的思想就是用户首先发送一个请求,那么服务器将要把用户的请求都处理完成后,在会通知用户,那么这样就会造成用户等待实践太长,比如说我们在浏览器点了一个功能,那么点击了以后用户没有反应,其实这时候服务器正在处理用户发送的请求,暂时没回应用户,这种情况对于用户来说就是 卡死了…. 其实它还是正在工作中,那么如果用户关闭了浏览器,那么它正在执行中的操作将会断开。


异步:

    将用户发送的请求放入消息队列,并反馈给用户已经执行成功,这时候并不是真正的执行成功了,而是先通知用户执行成功了,当用户看到执行成功的结果,那么它肯定不会在执行一次了,这时候消息队列在慢慢的把用户发送的请求写到服务器中。


总结:

        同步:是所有的操作都做完,写入服务器数据库当中才会通知用户执行成功,这样的话会造成服务器压力过大,而且用户的体验效果也不是很好。

        异步:不用等待服务器数据库是否写入,而是先通知用户执行成功,随后在慢慢的写入服务器数据库,这样会减轻服务器的压力,同时对用户的体验效果很好。



### 同步异步编程概念及其区别 #### 定义 同步(Synchronous)异步(Asynchronous)是两种描述任务执行模式的方式。在同步操作中,程序按照顺序依次执行每一步骤,在前一个步骤完成之前不会开始下一个步骤[^1]。而在异步环境中,多个任务可以并发运行而不必等待其他任务结束即可启动新任务。 #### 执行流程对比 对于同步过程而言,当发起一次请求时,调用方会一直阻塞直到收到回应并处理完毕之后才会继续向下一条指令前进;相反地,在异步情况下,则允许立即返回控制权给调用者而无需等待当前操作的结果到来就能去做别的事情[^2]。 #### 性能影响 采用同步方法可能会因为频繁地等待I/O或其他耗时较长的操作而导致整体效率低下。相比之下,利用好异步特性能够有效提高系统的吞吐量响应能力,尤其是在面对大量并发访问或网络通信场景下表现尤为明显[^3]。 #### 应用实例 为了更直观展示这两种不同风格下的差异: - **同步示例** ```c // C语言中的同步读取文件内容 #include <stdio.h> int main() { FILE *file; char buffer[1024]; file = fopen("example.txt", "r"); if (file != NULL){ while(fgets(buffer, sizeof(buffer), file)){ printf("%s\n", buffer); } fclose(file); } else{ perror("File opening failed"); } return 0; } ``` - **异步示例** ```javascript // JavaScript 中基于 Promise 的异步 HTTP 请求 fetch('https://jsonplaceholder.typicode.com/posts') .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error('Error:', error)); ``` 上述例子展示了如何通过各自的语言特点实现同步异步逻辑。前者需逐行读入数据直至全部加载完成后才可进行下一步动作;后者则可以在发出获取远程资源命令的同时做其它工作,并在未来某个时刻接收已完成的数据回调通知[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值