阻塞和非阻塞

Linux内核等待队列poll中,阻塞和非阻塞是两种不同的模式。阻塞模式下,当程序等待某个事件发生时,程序就会暂停执行,直到事件发生,程序才会继续执行;而非阻塞模式下,程序不会暂停执行,而是继续执行,只是每次检查事件是否发生,如果事件发生,程序就会处理相应的事件。

阻塞模式

在阻塞模式下,程序会暂停执行,等待事件发生,这样可以大大节省系统资源。例如,当程序读取磁盘文件时,如果使用阻塞模式,程序就会暂停执行,等待磁盘文件读取完成,然后才会继续执行。这样,可以避免程序多次读取磁盘文件,从而节省系统资源。

非阻塞模式

在非阻塞模式下,程序不会暂停执行,而是每次检查事件是否发生,如果事件发生,程序就会处理相应的事件。这样,可以提高程序的处理速度,但是会增加系统资源的消耗。例如,当程序读取磁盘文件时,如果使用非阻塞模式,程序就不会暂停执行,而是每次检查磁盘文件是否读取完成,如果磁盘文件读取完成,程序就会处理相应的事件。