同步、异步、阻塞、非阻塞的关系与区别

在IO操作中,实际的IO操作被分为两部分,一部分是IO请求,一部分是实际IO读写操作。

1、同步机制 发送方发送请求之后,需要等接收方发回响应后才接着发。

2、异步机制 发送方发送一个请求之后不等待接收方响应这个请求,就继续发送下个请求。

也就是说,同步与异步之间的差别,是在于实际的IO操作是否阻塞了下个请求,假如阻塞了下个请求,那就是同步,否则为异步。

3、阻塞调用 调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回,该线程在此过程中不能进行其他处理

4、非阻塞调用调用结果不能马上返回,当前线程也不会被挂起,而是立即返回执行下一个调用。(网络通信中主要指的是网络套接字Socket的阻塞和非阻塞方式,而soket 的实质也就是IO操作)

阻塞与非阻塞的区别在于,IO请求调用线程是否被挂起,假如请求线程被挂起,那么就是阻塞调用,否则为非阻塞调用

5、同步阻塞方式 发送方发送请求之后一直等待响应。接收方处理请求时进行的IO操作如果不能马上等到返回结果,就一直等到返回结果后,才响应发送方,期间不能进行其他工作

6、同步非阻塞方式发送方发送请求之后,一直等待响应,接受方处理请求时进行的IO操作如果不能马上的得到结果,就立即返回,取做其他事情。但是由于没有得到请求处理结果,不响应发送方,发送方一直等待。一直等到IO操作完成后,接收方获得结果响应发送发后,接收方才进入下一次请求过程。(实际不应用)

7、异步阻塞方式 发送方向接收方请求后,不等待响应,可以继续其他工作,接收方处理请求时进行IO操作如果不能马上得到结果,就一直等到返回结果后,才响应发送方,期间不能进行其他操作。 (实际不应用)

8、异步非阻塞方式发送方向接收方请求后,不等待响应,可以继续其他工作,接收方处理请求时进行IO操作如果不能马上得到结果,也不等待,而是马上返回取做其他事情。当IO操作完成以后,将完成状态和结果通知接收方,接收方在响应发送方。(效率最高)

同步非阻塞异步非阻塞都是针对并发编程的不同策略,主要区别在于它们如何管理时间片以及在处理任务时的交互方式。 ### 同步非阻塞 (Synchronous Non-blocking) - **特点**: 系统能持续接收并处理新请求,即便是在处理较长耗时的操作期间也是如此。 - **工作流程**: 接收一个请求后,系统并不等待其完成,而是继续处理其他未完成的请求,并将当前请求放入等待队列中。当当前请求完成或超时时,系统会从等待队列中取出并继续处理。 - **优势**: 提高了并发性能和整体系统利用率。 - **劣势**: 开发和调试相对复杂,尤其是在多任务切换时需要更精细的控制。 ### 异步非阻塞 (Asynchronous Non-blocking) - **特点**: 更侧重于在处理I/O和其他耗时任务时不阻塞主线程或任何其他的任务流。 - **工作流程**: 当遇到I/O操作、数据库查询等需要等待的情况时,程序会立即返回给用户,而不是进入阻塞状态。这使得在等待结果的同时,系统能够处理更多的任务。 - **优势**: 显著提高并发处理能力,特别是面对大量轻量级任务时。 - **劣势**: 需要使用回调函数、事件循环或多路复用器等复杂的机制来组织和管理任务,增加了代码的复杂性和难度。 ### 主要区别总结 - **任务执行顺序与调度**: - **同步非阻塞**:保持任务按接收顺序执行,但在等待耗时操作时,可以并行处理其它任务。 - **异步非阻塞**:任务不受接收顺序限制,一旦遇到耗时操作即返回,直到结果准备好才再次运行。 - **核心目标**: - **同步非阻塞**:主要目标是提高整体系统性能和响应速度。 - **异步非阻塞**:着重于最大化I/O操作的效率,特别是在处理大量I/O密集型任务时。 - **实现方式**: - **同步非阻塞** 可以通过优化现有线程或进程的调度实现,例如通过多线程池、异步文件系统等技术。 - **异步非阻塞** 则更多依赖于事件驱动和回调机制,如通过异步IO、基于事件的网络服务器等技术。 ### 相关问题: 1. **异步编程与同步编程的主要区别是什么?** 2. **异步非阻塞编程在哪些场景下特别有效?** 3. **在选择同步非阻塞还是异步非阻塞时,应考虑哪些因素?** 以上介绍了这两种编程策略的核心差异及其应用场景,选择哪种取决于具体的业务需求、系统负载特性以及团队的技术栈和经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值