![](/img/trans.png)
[英]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.