1. Synchronous, asynchronous blocking and non-blocking
Synchronous and asynchronous focus on the message communication mechanism ,
Synchronization is to issue a "call" and wait for the result of the "call", that is, the "caller" actively waits for the result;
Asynchronously is to issue a "call", and the result of the "call" will not be returned immediately, but the "callee" processes the "call" through a callback.
Blocking and non-blocking focus on the state of the program while waiting for the result .
Blocking means that before the result of the call is returned, the current thread will be suspended until the result is returned;
Non-blocking means that the call will not block the current thread until the result of the call is returned.
Note: Blocking and non-blocking are both synchronous IO (Input/Output), asynchronous must be non-blocking .