异步处理和同步处理
1、同步式IO或阻塞式IO
线程在执行中如果遇到磁盘读写或网络通信,通常需要耗费较长的时间,这是操作系统会剥夺这个线程的CPU控制权,同时将资源让给其他的工作线程,将其暂停执行,这种线程的调度方式就叫阻塞,当IO操作完毕时,操作系统将这个线程的阻塞状态解除,恢复其对CPU的控制权,令其继续执行。

2、异步式IO或非阻塞IO
针对所有的IO操作不采取阻塞策略,当线程遇到IO操作时,不会以阻塞的方式等待IO操作的完成或数据的返回,而只是将IO请求发送给操作系统,继续执行下一条语句,当操作系统完成IO操作时,以事件的形式通知执行IO操作的线程,线程会在特定的时间处理这个事件,为了处理异步IO,线程必须有事件循环,不断地检查有没有未处理的事件,依次予以处理。

3、非阻塞和阻塞的区别:
非阻塞:一个线程永远的执行计算操作,这个线程所使用的CPU核心利用率永远都是100%,IO以事件的形式通知。
阻塞:多线程往往提高系统的吞吐量,因为一个线程的阻塞还有其他线程在工作,多线程可以避免CPU浪费在阻塞的线程中。

浙公网安备 33010602011771号