2015-10-07 98 views

回答

0

会发生什么,如果使用阻塞I/O与select()

,你会得到IllegalBlockingModeException.

select()已经阻止呼叫。那么它是如何工作的?

它会阻塞,直到发生正在选择的事件或超时到期(如果有)。

+1

至少在UNIX系统中,使用select使用阻塞套接字是完全有效的,并且使用select语句(如完全不支持Exceptions的C语言)也是完全有效的。也许你描述的行为是特定于Java的。 –

+0

不知何故,答案假设Java,这是没有在问题中指定。 – SergeyA

+0

感谢您的解释。但仍有一些疑问。我无法清除阻止和非阻止上下文。 1)如果使用select()使用select或non-blocking使用多个客户端阻塞读/写,有什么区别?
2)如果使用bocking或非阻塞选择或不选择c中的BSD套接字,我会在哪里得到问题 –

0

select()poll()与阻塞或非阻塞套接字一起使用是完全正确的。呼叫select()本身将被阻止,直到提供给select()的(其中一个)插座可用于阅读。