GO语言学习系列:同步/异步/阻塞/非阻塞
来源:互联网 发布:淘宝兼职模特招聘 编辑:程序博客网 时间:2024/06/08 04:28
在消息通信中,经常会把同步/异步/阻塞/非阻塞等概念混淆,在此查找资料,并进行总结。
同步/异步
有A、B两个线程进行通信
同步:A向B发送消息后,B在处理消息的过程中,线程A一直处于主动等待B的消息的状态(不执行其他操作--阻塞,定期发送查询信息--非阻塞),B处理完消息后,A主动得到B的结果,此时A和B之间处于同步模式;
异步:A向B发送消息后,A不主动等待B的消息(继续执行其他操作--非阻塞,不执行--阻塞),B处理消息后,将处理结果返回给A,
此时A和B之间处于异步模式;
注意:同步/异步是指线程之间,与线程等待消息时的状态有关。
阻塞:A向B发送消息后,A处于等待状态不进行其他操作,此时A为阻塞调用;
非阻塞:A向B发送消息后,A在处于等待的同时继续执行其他操作,
此时A处于非阻塞调用;
注意:阻塞/非阻塞是指同一个线程的状态,与线程等待消息时的状态有关。
具体说明:
同步阻塞I/O
A向B发送消息后,A一直处于等待状态不执行其他操作(A处于阻塞状态),
直到B处理完消息后返回结果(A、B间属于同步),A收到B的结果后继续执行。
同步非阻塞I/O
A向B发送消息后,A处于主动等待B消息的状态,此时A定期向B查向处理结果(A、B
之间为同步),同时A可以处理其他操作(A处于非阻塞状态),知道B处理完消息返回结果,
A收到结果后继续执行。
异步阻塞I/O
A向B发送消息后,A不执行其他的操作(A处于阻塞状态),B处理完消息后主动发送结果到A
(A、B之间为异步状态),A收到处理结果后继续执行。
异步非阻塞I/O
A向B发送消息后,A继续执行其他操作(A处于非阻塞状态),B处理完消息后主动发送
结果到A(A、B之间为异步状态),A收到处理结果后继续执行。
个人理解,异步的处理类似于回调或消息链表?同步的处理方式为定时器?不太确定,求大神解释。
- GO语言学习系列:同步/异步/阻塞/非阻塞
- 同步异步阻塞非阻塞 的学习
- 同步阻塞, 同步非阻塞,异步阻塞,异步非阻塞
- 同步、异步、阻塞、非阻塞
- 同步,异步,阻塞,非阻塞
- 同步 异步 阻塞 非阻塞
- 同步,异步,阻塞,非阻塞
- 阻塞,非阻塞,异步,同步
- 同步 异步 阻塞 非阻塞
- 同步 异步 阻塞 非阻塞
- 同步 异步 阻塞 非阻塞
- 同步异步 阻塞非阻塞
- 同步 异步 阻塞 非阻塞
- 同步、异步,阻塞、非阻塞
- 阻塞 非阻塞 同步 /异步
- 同步/异步 阻塞/非阻塞
- 同步 异步 阻塞 非阻塞
- 同步异步 阻塞非阻塞
- Anaconda使用总结
- 多年iOS开发经验总结(一)
- websphere服务五:导出ear包的几种方法
- Java instanceof用法
- Concept with IIS 7.0 component
- GO语言学习系列:同步/异步/阻塞/非阻塞
- windows下配置play的相关环境
- Linux常用命令
- Qt中单例模式的实现
- [牛客网]错题整理(4)
- PriorityQueue
- 第一章:eclipse 中修改字体大小和编码格式
- C# 判断DATASET是否为空
- Vbs脚本经典教材