同步、异步、阻塞、非阻塞
基础概念
上面的四个关键字为与IO操作相关的两组概念。下面分别进行说明:
同步/异步的概念指消息的通知机制,是从发送端而言的
同步:
一个任务的完成情况可以直接得到。该任务的操作过程中不可以执行其他任务。
异步:
一个任务的完成情况不可以直接得到,需要后续等待操作系统通知。该任务的操作过程中可以执行其他任务。
阻塞/非阻塞的概念指消息的调用方式,是从接收端而言的。
阻塞:
调用结果返回之前,当前线程会被挂起,一直处于等待消息通知,不能执行其他操作。
非阻塞:
调用结果返回之前,该函数不会阻塞当前线程,而会立刻返回,但想要得到这些结果需要不停地进行询问。
非阻塞的方式可以明显的提高CPU的利用率,但也带来了系统的线程切换增加。需要权衡增加的CPU执行时间与系统的切换成本。
同步与异步的底层区别
同步通信的底层实现方式是轮询;
异步通信底层的实现方式是中断。
下面举例说明:
一个计算机系统中,CPU与外部设备的通信分为同步异步两种,CPU的外设种类很多,串口、鼠标、键盘一类的慢速设备,与CPU的运行速度