1. 阻塞与非阻塞
就是是否等待的区别,以 linux的 Socket 通信来说:
- 阻塞就是调用 read() 读取socket时,如果没有数据,就会阻塞着循环等待,直到有数据时再继续执行读操作
- 非阻塞就是如果设置了这个socket 非阻塞属性后,没有数据时也会循环地读取,但会直接返回读取的结果(读到的字节数、错误代码)
2. 同步与异步
同步与异步其实是一种思想上的区别,借网上的一个例子来说:
- 同步就是,当你开了一家快餐只能打包带走的,来一个客人给他现做一份,其他的就在后面排队,阻塞着等待
- 异步就是,开了一家餐馆或者外卖,客人来了点菜或者发一个订单