同步和异步概念与消息的通知机制有关:
对于消息处理者而言,在同步的情况下,由处理消息者自己去等待消息是否被触发;在异步的情况下,由触发机制来通知处理消息者,然后进行消息的处理。同步和异步仅仅是关于所关注的消息如何通知的机制,而不是处理消息的机制。
阻塞和非阻塞与消息的处理机制有关:
阻塞模式是指在指定套接字上调用函数执行操作时,在没有完成操作之前,函数不会立即返回。非阻塞模式是指在指定套接字上调用函数执行操作时,无论操作是否完成,函数都会立即返回。
同步与阻塞,异步与非阻塞并不是两对相同的概念,要注意消息的通知和消息的处理是不同的。
比喻理解:
同步:由自己去询问能否取餐
异步:由服务员通知你取餐
阻塞:等待时什么都不做
非阻塞:等待时做点别的事情
同步阻塞:A什么都不做一遍一遍地问是否能取餐
同步非阻塞:A边刷新闻边问是否能取餐
异步阻塞:A什么都不做等着服务员叫他取餐
异步非阻塞:A在等服务员叫他取餐时边刷新闻