wait(events, timeout) -> Integer | nil[permalink][rdoc][edit]wait(*mode, timeout = nil) -> self | true | nil(Integer events, ?Time::_Timeout timeout) → (Integer | false | nil)(?Time::_Timeout? timeout, *wait_mode mode) → (self | true | false)-
selfが指定したイベント(読み込み可能・書き込み可能・優先データの受信)の準備ができるまでブロックします。第 1 の形式では、待つイベントを
IO::READABLE・IO::WRITABLE・IO::PRIORITYのビット OR で指定します。準備ができたイベントのビットマスクを Integer で返し、timeout秒待っても準備できなかった場合は nil を返します。IO::READABLEを含む場合、内部のバッファにデータがあればブロックせずにIO::READABLEを返します。第 2 の形式では、待つイベントをシンボルで指定します。
:read(:r・:readable)・:write(:w・:writable)・:read_write(:rw・:readable_writable)を 1 つ以上指定でき、省略した場合は:readです。timeoutとシンボルは任意の順序で指定できます。準備ができたらselfを返し、内部のバッファにデータがあればブロックせずに true を返します。timeout秒待っても準備できなかった場合は nil を返します。- [PARAM]
events: -
待つイベントを
IO::READABLE・IO::WRITABLE・IO::PRIORITYのビット OR で指定します。 - [PARAM]
mode: -
待つイベントを
:read・:write・:read_writeなどのシンボルで指定します。 - [PARAM]
timeout: - タイムアウトまでの秒数を指定します。nil を指定すると準備ができるまで待ち続けます。第 1 の形式では省略できません。
- [EXCEPTION]
ArgumentError: -
eventsが正の整数でない場合や、modeに未対応のシンボルを指定した場合に発生します。
r, w = IO.pipe p r.wait(IO::READABLE, 0) # => nil p w.wait(IO::WRITABLE, 0) == IO::WRITABLE # => true p r.wait(:read, 0) # => nil w.write("x") p r.wait(IO::READABLE, 0) == IO::READABLE # => true p r.wait(:read, 0).equal?(r) # => true[SEE_ALSO] IO#wait_readable, IO#wait_writable, IO#wait_priority
- [PARAM]