前言
几个月前就搜过这方面的博文,以为自己懂了。经过几个月的沉淀,有了更深的理解
百度百科
另外,百度百科的这一版本真的让人欲哭无泪,先不说这个解释是否得当,起码是有一个明显的错误:非阻塞允许多个线程同时进入临界区
学过操作系统的都知道,临界区指的是一段代码,而临界资源的互斥访问是互斥锁信号量这些控制的。假如一个文件同时读写,那肯定乱套。
学海无涯,我不敢认定自己绝对正确,但是,上面那句话要么大错特错,要么重点跑偏
而这位朋友写这句话的出处也被我找到了
总结
同步和异步
同步和异步关注的是消息通信机制。关注的是被调用者的行为
同步:被调用者得到结果才返回给调用者。
异步:被调用者立即返回。调用者如何拿到结果?轮询和回调。被调用者通过状态、通知来通知调用者,或通过回调函数处理这个调用。
异步典型应用Ajax请求,通过ajax发送千万个请求,不会阻塞住后面代码的执行,后面代码不会说等ajax请求完再执行,后台处理给ajax返回后触发回调函数
阻塞和非阻塞
阻塞和非阻塞关注的是调用者在等待调用结果(消息,返回值)时的状态.
阻塞和非阻塞指的是调用者在等待返回结果(或输入)时的状态。阻塞时,在调用结果返回前,当前线程会被挂起,并在得到结果之后返回。非阻塞时,如果不能立刻得到结果,则该调用者不会阻塞当前线程。因此对应非阻塞的情况,调用者需要定时轮询查看处理状态。
弱水三千,各取一瓢
有时,不同的回答都可以是对的,它们有不同的侧重点和角度,最好呢,还是具体场景具体分析
那些年让你迷惑的阻塞、非阻塞、异步、同步
同步 异步 阻塞 非阻塞 区别
https://www.zhihu.com/question/19732473/answer/241673170
关于同步/异步和阻塞/非阻塞的了解,求大神指导有错误和遗漏的地方吗?
也谈阻塞、非阻塞、同步、异步