同步&异步+阻塞&非阻塞(理解)

0 - 同步&异步

  同步和异步关注的是消息通信机制。

0.1 - 同步

  由“调用者”主动等待这个“调用”结果。即是,发出一个“调用”时,在没有得到结果之前,该“调用”不返回,一旦调用返回,则得到返回值。

0.2 - 异步

  “调用者”不主动等待“调用”结果,而是“调用”结束之后主动通知“调用者”(通过状态、通知或者回调函数等各种形式)。

0.3 - 同步&异步-举例

  例如,我打电话去询问教务处老师有没有开设”高性能计算导论“这门课。如果是同步机制,则老师会说,”稍等一下,我查一下“,然后我就在接通电话的状态下一直等着老师的回复;而如果是异步机制,则我就会挂断电话,等老师查询之后直接通过”回电“的方式通知我。

1 - 阻塞&非阻塞

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

1.1 - 阻塞

  阻塞是指程序在等待结果时该线程会挂起,即是说做不了其它事。

1.2 - 非阻塞

  非阻塞是指程序在等待结果时不阻塞当前线程,可以做其它的事。

1.3 - 阻塞&非阻塞-举例

  还是上面的例子,我还是打电话询问教务处老师有没有开设”高性能计算导论“这门课。如果是同步阻塞机制,则老师说,”稍等一下,我查一下“之后,我会一直守在通话旁等待老师回复而不做任何其它事情;如果是同步非阻塞机制,在老师说完之后我会同步做其它的一些小事情,比如用电脑刷刷微博等等,但还是会时不时注意手机保持的通话中老师是否在回复我。异步阻塞和异步非阻塞与相应的同步阻塞和非阻塞对应,但是我会挂断电话,以老师“回电”方式告知我。

2 - 参考资料

https://www.zhihu.com/question/19732473

posted @ 2018-09-29 22:15  CZiFan  阅读(310)  评论(0编辑  收藏  举报