1、同步、异步、阻塞、非阻塞理解?
1.1、同步与异步
同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication)
同步:当发出一个调用时,在没有得到返回之前,该调用就不返回。一旦调用返回,就一定得到了本次调用的返回值了。
异步:当调用发出之后,这个调用就直接返回了,所以没有返回结果。但是本次调用的结果,会通过一个状态或者通知消息来通知本次调用者,然后拿到结果。
1.2、阻塞与非阻塞
阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态.
阻塞:阻塞调用是指在调用结果返回之前,当前线程会被挂起。只有等到结果之后才会返回。
非阻塞:非阻塞调用是指在不能立刻得到结果之前,该调用不会阻塞当前线程。
1.3、混合概念
一、同步阻塞:当发出一个调用的时候,一直在等待返回的结果通知消息,期间不做其他任务处理。
理解:同步体现在,等待通知消息。阻塞体现在,期间不做其他任务处理。
二、同步非阻塞:当发出一个调用的时候,一边等待返回的结果通知消息,一边处理其他任务。此过程中 俩个任务,或者多个任务是要来回切换的。
理解:同步体现在,等待通知消息。非阻塞体现在,处理其他任务
三、异步阻塞:当发出一个调用时,这个调用在完成时会发出一个完成的回调函数,或者是一个消息通 知,去告知发起者。期间不做其他任务处理。
理解:异步体现在,发出一个成功的回调函数或者消息通知。阻塞体现在:期间不做其他任务处理。
四、 异步非阻塞:当发出一个调用时,这个调用在完成时会发出一个完成的回调函数,或者是一个消息 通知,去告知发起者。期间做其他任务,不必关注这个调用函数完成情况。只需要接受完成的回调。
理解:异步体现在,发出一个成功的回调函数或者消息通知。阻塞体现在:期间做其他任务处理。