If you want to have a Kung Pao Chicken Bowl:
synchronization blocking: You go to the restaurant to order, and then wait there, but also shouted: OK!
synchronous non-blocking: When you finish the meal at the restaurant, walk the dog. But slipped for a moment, and went back to the restaurant and shouted: "Well, no!"
Asynchronous blocking: When you walk the dog, you get a call from the restaurant and say that the meal is ready for you to take it yourself.
asynchronous non-blocking: the restaurant called and said, we know your location, one will send you over, a safe walk the dog can be.
an IO operation is actually divided into two steps: initiating an IO request and the actual IO operation.
the difference between synchronous IO and asynchronous IO is whether the second step is blocked, and if the actual IO reads and writes blocking the request process, then it is synchronous IO.
the difference between blocking IO and non-blocking IO is that the first step is whether the initiating IO request will be blocked, and if blocking until done is the traditional blocking IO, and if it does not block, then it is non-blocking IO.
Blocking and non-blocking synchronous and asynchronous