首页 > 代码库 > 网络编程中的同步与异步
网络编程中的同步与异步
网络编程中有三对关键的词,单线程与多线程、阻塞与非阻塞、同步与异步,同步与异步一直是比较疑惑的地方。
以前认为,同步就是阻塞socket,异步就是非阻塞socket,现在发现这样理解很片面的,其实好多地方有同步异步的概念。
数字电路中的同步与异步是针对时钟来说的
同步时序逻辑电路:各触发器有相同的时钟脉冲,时钟脉冲到来时所有触发器状态同时改变
异步时序逻辑电路:没有统一的时钟脉冲,所有触发器的状态转换不一定发生在同一时刻,某些触发器的状态转换有可能会延迟。
在通信原理中也有同步与异步的概念
同步传输:发送方与接收方以相同的速率进行收发,不需要对每个字符进行开始和停止的操作
异步传输:每次异步传输的信息都以一个起始位开头,在传输结束时,一个停止位表示该次传输信息的终止。
在生活中也有同步与异步的例子
厨房里做大饼的大厨把大饼抛给做销售的大婶,他可以以两种方式来抛
同步抛大饼:大叔头都不抬,以一定的频率抛,大婶也没抬头,以相同的频率接。
异步抛大饼:大叔对大婶说,要抛了,大婶做好准备,大叔才抛出大饼。
可以看到,同步是以相同的频率来达成协作,异步是以通知的方法来达成协作。
在网络编程中
阻塞与非阻塞只是针对线程而言,在等待IO的时候是挂起还是继续做别的事情。同步与异步是指IO设备与CPU的协作方式,而不是发送方与接收方的协作方式(以前是这样认为的),由于CPU的运算速度很快,跟IO设备不是一个级别的,因此同步socket就会使线程一直等待。异步socket会以通知的方式与CPU进行协作,当IO事件到来时线程会收到通知,异步体现在这里,而不是非阻塞socket。
网络编程中的同步与异步
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。