同步异步小记

同步与异步

"同步"是指一个进程发起请求之后, 需要一直等待返回的信息, 而"异步"是指可以进程发起请求之后, 可以处理其他的事情, 等到信息返回之后再次通知这个进程处理(如添加回调函数).

异步与多线程

异步是一种技术功能要求,多线程是实现异步的一种手段。异步适用于io密集型操作,多线程适用于计算密集型操作。
同步异步更强调的是消息反馈机制,即调用后是否需要等待返回结果。
单线程下,异步I/O操作也能实现。硬盘,显卡这些硬件是可以不消耗CPU资源而自动与内存交换数据的,这也是实现异步的基本条件,当数据交互完成,再触发指定的回调函数,来实现异步之后的同步。

同步异步和阻塞非阻塞

阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态。
阻塞调用是指调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回。
非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程。

同步异步更强调的是消息反馈机制,即调用后是否需要等待返回结果。
阻塞和非阻塞io都是同步,凡是自己主动去读取IO的必然会阻塞(要么在数据等待阶段,要么在读取阶段(非阻塞)),因为CPU都会通过IO指令下放给IO设备;而不主动读取等待IO完毕通知的是非阻塞的,也就是异步的,其实它只是将阻塞过程转移到了其它线程从而使自己不用阻塞。

Guess you like

Origin blog.csdn.net/weixin_53022668/article/details/121223006