[英]perl, read blocking using IO::Select and IO::Socket::INET
[英]How can I block waiting for either a read or write socket using IO::Select?
我正在使用IO :: Select 。
它是普通select
调用的OOP包装器,但它公开了can_read()
和can_write()
方法。 有没有办法阻止等待读或写套接字? 这是否(几乎)没有打败拥有IO :: Select的目的?
选择(READ,WRITE,EXCEPTION [,TIMEOUT])
select
是一个静态方法,即使用包名称(如new
调用它。READ
,WRITE
和EXCEPTION
是undef
或IO::Select
对象。TIMEOUT
是可选的,其作用与核心选择调用相同。结果将是一个由3个元素组成的数组,每个元素都是对数组的引用,该数组将保存准备好读取,写入和分别具有异常的句柄。 出现错误时,将返回一个空列表。
例如:
my $rsel = IO::Select->new($rfh);
my $wsel = IO::Select->new($wfh);
my $esel = IO::Select->new($rfh, $wfh);
my @ready = IO::Select->select($rsel, $wsel, $esel, undef);
如果未给出TIMEOUT且未注册任何句柄,则调用将阻塞。
如果您不通过超时, can_read
和can_write
会阻塞。 我建议这虽然在某些情况下可能很少需要。
就个人而言,我建议改用许多事件模块之一(POE,AnyEvent等)。 要进行的工作还多一些,但可以更轻松地处理更多方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.