Nonblocking I/O:程序在继续执行一个从终端等读数据操作的后续操作时,通常回等到至少读到一个数据为止,这就是blocking I/O。 (by Johnny Deng)
传统上:有以下三种技术可以实现Nonblocking的I/O:
1)I/O Mutilplexing:处理所有输入来源,并使用如select()的系统调用方式来分配数据,开发者只需要登记一个会在特定来源有数据时callback的函数就好。
2)Polling:测试某特定来源是否有数据可用。如果有,就处理,没有就去干别的task。如像poll()的系统调用。在Java1.4中的nio包中的类就应该支持这种方式,如SelectableChannel支持nonbloking的模式。
3)signal:以一个文件描述符来代表输入来源,因此在数据可从该输入来源取得时会送入一个异布的消息给程序。此消息会让程序中断来处理输入。Java似乎不支持这种形式。
本文介绍了非阻塞I/O的基本概念及其实现技术,包括I/O多路复用、轮询和信号处理。详细解释了每种技术的工作原理及其应用场景。
25万+

被折叠的 条评论
为什么被折叠?



