这个时候其他进程发起请求调用的时候须等待系统内核完成工作之外才能处理其他的进程请求,也就是1:1模型
select/poll函数:调用当前函数的时候,此时用户进程受阻于当前select函数,不断轮询向内核select就绪状态的描述符或者是超过指定时间段被唤醒...当select接收到系统内核通知事件为可读状态时,就可以向系统内核发起recvfrom调用将数据复制到用户空间的缓冲区
IO复用模式时序图如下
?...信号处理函数接收到信息就发起recvfrom系统调用等待内核复制数据报到用户空间的缓冲区
接收到复制完成的返回成功提示之后,应用进程就可以开始从网络中读取数据
上述是基于信号驱动式IO模型,当系统内核描述符就绪时将会发送...“唤醒”手段通知调用方获取结果(唤醒的方式有回调,事件通知等)
小结: 同步和异步关注的是程序之间的通信
阻塞与非阻塞的定义
阻塞: 类比线程阻塞来说明,在并发多线程争抢资源的竞态条件下,如果有一个线程已持有锁...,那么当前线程将无法获取锁而被挂起,处于等待状态
非阻塞: 一旦线程释放锁,其他线程将会进入就绪状态,具备争抢锁的资格
小结: 阻塞与非阻塞更关注是程序等待结果的状态
由此可知,同步异步与阻塞非阻塞之间不存在关联