关于同步异步,阻塞非阻塞的理解

本文详细解释了同步与异步、阻塞与非阻塞的概念及其区别,帮助读者理解不同编程模式的特点及应用场景。

 

关于同步异步,阻塞非阻塞,一直有困惑,大致了解整理一下,如有错误,请指正谢谢!

同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?

 

一、同步异步

同步和异步,关注的是消息通信机制,主要针对Client端

同步:client执行一个操作后,需要等待结果返回,只有等待结果返回后,才能执行下一个操作,事情得一件一件来,之前的事情做完了才能做下一件事情。

异步:client执行一个操作后,可以返回执行其他操作(无需等待当期执行结果返回),然后等待通知再回来执行刚才没有完成的操作。(ajax,node.js异步编程)

 

二、阻塞非阻塞

阻塞和非阻塞,关注的是程序在等待调用结果(消息,返回值)时的状态。主要针对Server端

阻塞:阻塞指调用结果返回之前,当前线程会被挂起(线程进入非可执行状态,在这个状态下,cpu不会给线程分配时间片,即线程暂停运行),调用线程只有得到结果后才返回。

非阻塞:非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程。

调用非阻塞I/O跟阻塞I/O的差别为调用之后立即返回,返回后,CPU的时间片可以用来处理其他事务,此时性能是提升的

 

三、区别

同步IO和异步IO的区别就在于:数据访问的时候进程是否阻塞!

阻塞IO和非阻塞IO的区别就在于:应用程序的调用是否立即返回!

同步和异步都只针对于本机SOCKET而言的。

同步和异步,阻塞和非阻塞,有些混用,其实它们完全不是一回事,而且它们修饰的对象也不相同。
阻塞和非阻塞是指当server端的进程访问的数据如果尚未就绪,进程是否需要等待,简单说这相当于函数内部的实现区别,也就是未就绪时是直接返回还是等待就绪;

而同步和异步是指client端访问数据的机制,同步一般指主动请求并等待I/O操作完毕的方式,当数据就绪后在读写的时候必须阻塞(区别就绪与读写二个阶段,同步的读写必须阻塞),异步则指主动请求数据后便可以继续处理其它任务,随后等待I/O,操作完毕的通知,这可以使进程在数据读写时也不阻塞。(等待"通知")

 

四、举个栗子:

老张喝茶,要烧水

1、老张把水壶装满水放到煤气灶上加热,等水开 (同步阻塞)

2、老张把水壶装满水放到煤气灶上加热,就离开了,时不时回来看下水开了没有(同步非阻塞)

 

 

参考链接:

http://blog.youkuaiyun.com/historyasamirror/article/details/5778378

https://www.zhihu.com/question/19732473

 

内容概要:本文介绍了一个基于Matlab的综合能源系统优化调度仿真资源,重点实现了含光热电站、有机朗肯循环(ORC)电含光热电站、有机有机朗肯循环、P2G的综合能源优化调度(Matlab代码实现)转气(P2G)技术的冷、热、电多能互补系统的优化调度模型。该模型充分考虑多种能源形式的协同转换与利用,通过Matlab代码构建系统架构、设定约束条件并求解优化目标,旨在提升综合能源系统的运行效率与经济性,同时兼顾灵活性供需确定性下的储能优化配置问题。文中还提到了相关仿真技术支持,如YALMIP工具包的应用,适用于复杂能源系统的建模与求解。; 适合人群:具备一定Matlab编程基础能源系统背景知识的科研人员、研究生及工程技术人员,尤其适合从事综合能源系统、可再生能源利用、电力系统优化等方向的研究者。; 使用场景及目标:①研究含光热、ORCP2G的多能系统协调调度机制;②开展考虑确定性的储能优化配置与经济调度仿真;③学习Matlab在能源系统优化中的建模与求解方法,复现高水平论文(如EI期刊)中的算法案例。; 阅读建议:建议读者结合文档提供的网盘资源,下载完整代码案例文件,按照目录顺序逐步学习,重点关注模型构建逻辑、约束设置与求解器调用方式,并通过修改参数进行仿真实验,加深对综合能源系统优化调度的理解
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值