非阻塞io和异步io的区别
时间: 2024-06-02 17:11:58 浏览: 70
IO中同步、异步与阻塞、非阻塞的区别
非阻塞I/O和异步I/O都是针对I/O操作而言的。
非阻塞I/O操作是指在进行I/O读写操作时,如果当前没有数据可读取,不会阻塞程序的执行,而是立即返回一个错误码或者空值,让程序继续执行其他任务。程序需要不断轮询I/O操作是否完成,直到数据可读取为止。
异步I/O操作也是非阻塞的一种,但不同的是,在进行I/O读写操作时,如果当前没有数据可读取,程序不需要不断轮询,而是直接返回,并告知操作系统在数据可读取时通知程序进行读取操作。当数据可读取时,操作系统会向程序发送通知,程序再进行读取操作,这样可以减少CPU的不必要开销。
因此,非阻塞I/O与异步I/O的主要区别在于程序是否需要不断轮询I/O操作是否完成。非阻塞I/O需要不断轮询,而异步I/O则由操作系统通知程序数据是否可读取。
阅读全文