クラス
-
ARGF
. class (22) - IO (44)
-
Thread
:: Queue (27) -
Thread
:: SizedQueue (27)
キーワード
- deq (18)
- fcntl (11)
- pop (18)
-
read
_ nonblock (22) - readpartial (22)
- shift (18)
-
write
_ nonblock (11)
検索結果
先頭5件
- IO
# write _ nonblock(string , exception: true) -> Integer | :wait _ writable - ARGF
. class # read _ nonblock(maxlen , outbuf = nil) -> String - ARGF
. class # read _ nonblock(maxlen , outbuf = nil , exception: true) -> String | Symbol | nil - IO
# read _ nonblock(maxlen , outbuf = nil , exception: true) -> String | Symbol | nil - IO
# readpartial(maxlen , outbuf = "") -> String
-
IO
# write _ nonblock(string , exception: true) -> Integer | :wait _ writable (12310.0) -
IO をノンブロッキングモードに設定し、string を write(2) システムコールで書き出します。
...し、string を write(2) システムコールで書き出します。
write(2) が成功した場合、書き込んだ長さを返します。
EAGAIN, EINTR などは例外 Errno::EXXX として呼出元に報告されます。
書き込んだバイト数(つまり返り値)は String#bytesize......ジェクトに IO::WaitWritable が Object#extend
されます。よって IO::WaitWritable を write_nonblock のリトライが必要
かの判定に用いることができます。
@param string 自身に書き込みたい文字列を指定します。
@param exception false を指定する......込み時に Errno::EAGAIN、Errno::EWOULDBLOCK が発生
する代わりに :wait_writable を返します。
@raise IOError 自身が書き込み用にオープンされていなければ発生します。
@raise Errno::EXXX write(2) が失敗した場合に発生します。... -
ARGF
. class # read _ nonblock(maxlen , outbuf = nil) -> String (6220.0) -
処理中のファイルからノンブロッキングモードで最大 maxlen バイト読み込みます。 詳しくは IO#read_nonblock を参照してください。
...は IO#read_nonblock を参照してください。
ARGF.class#read などとは違って複数ファイルを同時に読み込むことはありません。
@param maxlen 読み込む長さの上限を整数で指定します。
@param outbuf 読み込んだデータを格納する String オブ......ジェクトを指定します。
@see ARGF.class#readpartial... -
ARGF
. class # read _ nonblock(maxlen , outbuf = nil , exception: true) -> String | Symbol | nil (6220.0) -
処理中のファイルからノンブロッキングモードで最大 maxlen バイト読み込みます。 詳しくは IO#read_nonblock を参照してください。
...は IO#read_nonblock を参照してください。
ARGF.class#read などとは違って複数ファイルを同時に読み込むことはありません。
@param maxlen 読み込む長さの上限を整数で指定します。
@param outbuf 読み込んだデータを格納する String オブ......ジェクトを指定します。
@param exception 読み込み時に Errno::EAGAIN、
Errno::EWOULDBLOCK が発生する代わりに
:wait_readable を返すかどうかを指定します。また、false
を指定した場合は既に EOF に達......していれば
EOFError の代わりに nil を返します。
@see ARGF.class#readpartial... -
IO
# read _ nonblock(maxlen , outbuf = nil , exception: true) -> String | Symbol | nil (6216.0) -
IO をノンブロッキングモードに設定し、 その後で read(2) システムコールにより 長さ maxlen を上限として読み込み、文字列として返します。 EAGAIN, EINTR などは Errno::EXXX 例外として呼出元に報告されます。
...列として返します。
EAGAIN, EINTR などは Errno::EXXX 例外として呼出元に報告されます。
発生した例外 がErrno::EAGAIN、 Errno::EWOULDBLOCK である場合は、
その例外オブジェクトに IO::WaitReadable が Object#extend
されます。
なお、バッフ......合、read(2) システムコールは呼ばれません。
このメソッドはノンブロッキングモードにする点を除いて IO#readpartial と
同じであることに注意してください。
バイナリ読み込みメソッドとして動作します。
既に EOF に達して......込む長さの上限を整数で指定します。
@param outbuf 文字列で指定します。IO#read_nonblock は読み込んだデータを outbuf に破壊的に格納し、
返り値は outbuf となります。outbuf は一旦 maxlen 長に拡張(あるいは縮小)されたあ... -
IO
# readpartial(maxlen , outbuf = "") -> String (6115.0) -
IO から長さ maxlen を上限として読み込み、文字列として返します。 即座に得られるデータが存在しないときにはブロックしてデータの到着を待ちます。 即座に得られるデータが 1byte でも存在すればブロックしません。
...が 1byte でも存在すればブロックしません。
バイナリ読み込みメソッドとして動作します。
既に EOF に達していれば EOFError が発生します。
ただし、maxlen に 0 が指定されている場合は、空文字列 "" を返します。
readpartial......とによって、
パイプ、ソケット、端末などのストリームに対して適切に動作するよう設計されています。
readpartial がブロックするのは次の全ての条件が満たされたときだけです。
* IO オブジェクト内のバッファが空
* ス......っていない
これらの条件が満たされる場合、何らかのデータが到着するか EOF になるまで readpartial はブロックします。
readpartial の結果は以下のようになります。
(1) バッファが空でなければ、そのバッファのデータを読... -
ARGF
. class # readpartial(maxlen , outbuf = nil) -> String (6109.0) -
IO#readpartialを参照。ARGF.class#read などとは違って複数ファ イルを同時に読み込むことはありません。
...IO#readpartialを参照。ARGF.class#read などとは違って複数ファ
イルを同時に読み込むことはありません。
@param maxlen 読み込む長さの上限を整数で指定します。
@param outbuf 読み込んだデータを格納する String オブジェクトを指定し......ます。
@see IO#readpartial, ARGF.class#read_nonblock... -
IO
# fcntl(cmd , arg = 0) -> Integer (6109.0) -
IOに対してシステムコール fcntl を実行します。 機能の詳細は fcntl(2) を参照してください。 fcntl(2) が返した整数を返します。
...IOに対してシステムコール fcntl を実行します。
機能の詳細は fcntl(2) を参照してください。
fcntl(2) が返した整数を返します。
@param cmd IO に対するコマンドを、添付ライブラリ fcntl が提供している定数で指定します。
@param......の時にはその値を fcntl(2) に渡します。
文字列の場合には Array#pack した構造体だとみなして渡します。
arg が nil か false の場合には 0を、true の場合には 1 を渡します。
@raise Errno::EXXX fcntl の実行に失敗した場......に発生します。
//emlist[例][ruby]{
require "fcntl"
IO.write("testfile", "abcde")
# ファイル状態フラグを読み出す
File.open("testfile") do |f|
f.fcntl(Fcntl::F_GETFL, 0) # => 0
f.fcntl(Fcntl::F_SETFL, Fcntl::O_NONBLOCK) # => 0
f.fcntl(Fcntl::F_GETFL, 0) # => 4
end
//}... -
Thread
:: Queue # shift(non _ block = false) -> object (6109.0) -
キューからひとつ値を取り出します。キューが空の時、呼出元のスレッドは停止します。
..._block true を与えると、キューが空の時に例外 ThreadError が発生します。
//emlist[例][ruby]{
require 'thread'
q = Queue.new
th1 = Thread.start do
while resource = q.pop
puts resource
end
end
[:resource1, :resource2, :resource3, nil].each { |r|
q.push(r)
}
th1.jo......in
//}
//emlist[例: nonblock = true][ruby]{
require 'thread'
q = Queue.new
th1 = Thread.start do
while resource = q.pop
puts resource
end
end
[:resource1, :resource2, :resource3, nil].each { |r|
q.push(r)
}
begin
th1.join
q.pop(true)
rescue => e
p e
end
# => resource1
# resour......ce2
# resource3
# => #<ThreadError: queue empty>
# => "queue empty"
//}... -
Thread
:: SizedQueue # shift(non _ block = false) -> object (6109.0) -
キューからひとつ値を取り出します。 キューに push しようと待っているスレッドがあれば、実行を再開させます。
...ock true を与えると、キューが空の時に例外 ThreadError が発生します。
//emlist[例][ruby]{
require 'thread'
q = SizedQueue.new(4)
th1 = Thread.start do
while resource = q.pop
puts resource
end
end
[:resource1, :resource2, :resource3, nil].each{|r|
q.push(r)
}
th1......urce2
# resource3
//}
//emlist[例: nonblock = true][ruby]{
require 'thread'
q = SizedQueue.new(4)
th1 = Thread.start do
while resource = q.pop
puts resource
end
end
[:resource1, :resource2, :resource3, nil].each{|r|
q.push(r)
}
begin
th1.join
q.pop(true)
rescue => e
p e
p e.m......essage
end
# => resource1
# resource2
# resource3
# => #<ThreadError: queue empty>
# => "queue empty"
//}
@see Thread::Queue#pop... -
Thread
:: Queue # deq(non _ block = false) -> object (3109.0) -
キューからひとつ値を取り出します。キューが空の時、呼出元のスレッドは停止します。
..._block true を与えると、キューが空の時に例外 ThreadError が発生します。
//emlist[例][ruby]{
require 'thread'
q = Queue.new
th1 = Thread.start do
while resource = q.pop
puts resource
end
end
[:resource1, :resource2, :resource3, nil].each { |r|
q.push(r)
}
th1.jo......in
//}
//emlist[例: nonblock = true][ruby]{
require 'thread'
q = Queue.new
th1 = Thread.start do
while resource = q.pop
puts resource
end
end
[:resource1, :resource2, :resource3, nil].each { |r|
q.push(r)
}
begin
th1.join
q.pop(true)
rescue => e
p e
end
# => resource1
# resour......ce2
# resource3
# => #<ThreadError: queue empty>
# => "queue empty"
//}... -
Thread
:: Queue # pop(non _ block = false) -> object (3109.0) -
キューからひとつ値を取り出します。キューが空の時、呼出元のスレッドは停止します。
..._block true を与えると、キューが空の時に例外 ThreadError が発生します。
//emlist[例][ruby]{
require 'thread'
q = Queue.new
th1 = Thread.start do
while resource = q.pop
puts resource
end
end
[:resource1, :resource2, :resource3, nil].each { |r|
q.push(r)
}
th1.jo......in
//}
//emlist[例: nonblock = true][ruby]{
require 'thread'
q = Queue.new
th1 = Thread.start do
while resource = q.pop
puts resource
end
end
[:resource1, :resource2, :resource3, nil].each { |r|
q.push(r)
}
begin
th1.join
q.pop(true)
rescue => e
p e
end
# => resource1
# resour......ce2
# resource3
# => #<ThreadError: queue empty>
# => "queue empty"
//}...