阻塞与非阻塞 ,同步 与异步的区别

1 同步 与异步

同步和异步关注的是消息通信机制,同步,就是发起一个调用后,在没有得到结果前,该调用不返回,一旦调用返回,就得到返回值,

就是调用者主动等待这个 调用的结果 ,

异步相反,调用发出后,就直接返回,没有返回结果 ,当一个异步过程调用发出后,调用者不会立刻得到结果 ,而是在调用发出后,由被调用者通过状态,通知来通知被调用者,或通过回调函数 处理这个 调用,典型的异步编程 模型如node js

比如你去书店找一本书 三国演义,你给书店老板说书名后,同步是书店老板找啊找,可能找一分钟,可能一天,他找到后,再把书给你,异步是,老板让你先回去,等找到后给你回电话,

阻塞和非阻塞  关注的是程序在等待调用结果时的状态,

阻塞 是指结果返回前,程序 会一直挂起, 走直到结果返回

非阻塞是结果 返回前,程序 的该线程会一直执行,

还是上面那个例子,阻塞是,报完书名后 ,,你一直在那儿等着,什么也不干,非阻塞是,报完书名后,你去干其他事,同时中间时不时去打电话问下书店老板

阻塞/非阻塞  进程/线程需要的数据是否就绪,进程 线程是否需要等待

同步 异步   :访问数据 的方式,同步 需要主动读写数据 ,在读写数据 过程中还是会阻塞

异步只需要I/O 操作完成的通知,并不主动读写数据 ,由于操作系统 内核完成数据 读写

水壶例子,老张烧水

同步阻塞: 老张一直等水烧开 

异步阻塞:老张用会响的水壶烧水,然后一直等

同步非阻塞,老张不等,时不时去看看水是否烧开

异步非阻塞,老张用会响的水壶,,然后水烧开后,老张听到响声去打水,

关键,同步 和异步关注的是消息的处理机制,  阻塞,非阻塞,关注的是进程是否被挂起,

原文地址:https://www.cnblogs.com/xqnq2007/p/7755785.html