ライブラリ
クラス
- Array (3)
- BasicSocket (1)
-
Enumerator
:: Lazy (2) - File (1)
-
Gem
:: Commands :: LockCommand (1) - IO (2)
-
Net
:: FTP (12) -
OpenSSL
:: SSL :: SSLSocket (2) - Socket (2)
- StringIO (2)
- TCPServer (1)
-
Thread
:: Mutex (3) - ThreadsWait (1)
モジュール
-
Mutex
_ m (2) -
OpenSSL
:: Buffering (2)
キーワード
-
accept
_ nonblock (2) - combination (1)
- complain (1)
-
connect
_ nonblock (2) - cycle (1)
-
enum
_ for (1) - flock (1)
- get (2)
- getbinaryfile (2)
-
mu
_ unlock (1) -
next
_ wait (1) - permutation (1)
- put (2)
- putbinaryfile (2)
-
read
_ nonblock (3) -
recv
_ nonblock (1) -
recvfrom
_ nonblock (1) - retrbinary (2)
- sleep (1)
- storbinary (2)
-
to
_ enum (1) - unlock (2)
-
write
_ nonblock (3)
検索結果
先頭5件
-
Thread
:: Mutex # lock -> self (54325.0) -
mutex オブジェクトをロックします。一度に一つのス レッドだけが mutex をロックできます。既にロックされている mutex に対してロックを行おうとしたスレッドは mutex のロックが解放さ れるまで、実行が停止されます。
mutex オブジェクトをロックします。一度に一つのス
レッドだけが mutex をロックできます。既にロックされている mutex
に対してロックを行おうとしたスレッドは mutex のロックが解放さ
れるまで、実行が停止されます。
@raise ThreadError self 既にカレントスレッドにロックされている場合に発
生します。
また、Signal.#trap に指定したハンドラ内で実行
した場合に発生します。
@see Thread::Mutex#unlock
... -
File
# flock(operation) -> 0 | false (18646.0) -
ファイルをロックします。
ファイルをロックします。
ロックを取得するまでブロックされます。
ロックの取得に成功した場合は 0 を返します。
File::LOCK_NB (ノンブロッキング) を指定すると、本来ならブロックされる場合に
ブロックされずに false を返すようになります。
@param operation ロックに対する操作の種類を示す定数を指定します。
どのような定数が利用可能かは以下を参照して下さい。
@raise IOError 自身が close されている場合に発生します。
@raise Errno::EXXX operation に不正な整数を与えた... -
IO
# read _ nonblock(maxlen , outbuf = nil , exception: true) -> String | Symbol | nil (18358.0) -
IO をノンブロッキングモードに設定し、 その後で read(2) システムコールにより 長さ maxlen を上限として読み込み、文字列として返します。 EAGAIN, EINTR などは Errno::EXXX 例外として呼出元に報告されます。
IO をノンブロッキングモードに設定し、
その後で read(2) システムコールにより
長さ maxlen を上限として読み込み、文字列として返します。
EAGAIN, EINTR などは Errno::EXXX 例外として呼出元に報告されます。
発生した例外 がErrno::EAGAIN、 Errno::EWOULDBLOCK である場合は、
その例外オブジェクトに IO::WaitReadable が Object#extend
されます。
なお、バッファが空でない場合は、read_nonblock はバッファから読み込みます。この場合、read(2) システムコールは呼ばれません... -
Thread
:: Mutex # unlock -> self (18358.0) -
mutex のロックを解放します。mutex のロック待ちになっていたスレッドの実行は再開されます。
mutex のロックを解放します。mutex のロック待ちになっていたスレッドの実行は再開されます。
@return self を返します。
例:
m = Mutex.new
begin
m.lock
# critical part
ensure
m.unlock
end
Mutex はロックしたスレッド以外からロックを開放することは出来ません。
ロックしたスレッド以外から unlock が呼ばれると ThreadError が発生します。
m = Mutex.new
m.lock
Thread.new do
m.unlock # => Thr... -
BasicSocket
# recv _ nonblock(maxlen , flags = 0) -> String (18340.0) -
ソケットをノンブロッキングモードに設定した後、 recvfrom(2) でソケットからデータを受け取ります。
ソケットをノンブロッキングモードに設定した後、
recvfrom(2) でソケットからデータを受け取ります。
引数、返り値は BasicSocket#recv と同じです。
recvfrom(2) がエラーになった場合、
EAGAIN, EINTR を含め例外 Errno::EXXX が発生します。
@param maxlen 受け取る文字列の最大の長さを指定します。
@param flags recv(2) を参照してください。
@raise IOError
@raise Errno::EXXX recvfrom(2) がエラーになった場合などに発生します。 -
IO
# write _ nonblock(string , exception: true) -> Integer | :wait _ writable (18340.0) -
IO をノンブロッキングモードに設定し、string を write(2) システムコールで書き出します。
IO をノンブロッキングモードに設定し、string を write(2) システムコールで書き出します。
write(2) が成功した場合、書き込んだ長さを返します。
EAGAIN, EINTR などは例外 Errno::EXXX として呼出元に報告されます。
書き込んだバイト数(つまり返り値)は String#bytesize の
値より小さい可能性があります。
発生した例外 がErrno::EAGAIN、 Errno::EWOULDBLOCK である場合は、
その例外オブジェクトに IO::WaitWritable が Object#extend
されます。よって IO::Wai... -
OpenSSL
:: Buffering # read _ nonblock(maxlen , buf) -> String (18340.0) -
通信路から maxlen バイトを上限としてデータを読み込み、 文字列として返します。
通信路から maxlen バイトを上限としてデータを読み込み、
文字列として返します。
即座に得られるデータが 1byte でも存在すればブロックしません。
内部バッファが空でない場合はバッファのデータを返します。
即座に得られるデータが存在しないときには例外が発生します。
例外が発生した場合、内部のソケットが利用可能になってから
再びこのメソッドを呼んでください。
基本的には IO#read_nonblock と同様です。しかし以下のような
違いもあります。
このメソッドはソケットが書き込み不可能(IO::WaitWritable)という理由で
例外を発生させる可能性があります。暗号... -
OpenSSL
:: SSL :: SSLSocket # accept _ nonblock -> self (18340.0) -
ノンブロッキング方式で TLS/SSL 通信をサーバモードとして開始し、 クライアントとのハンドシェイクを実行します。
ノンブロッキング方式で
TLS/SSL 通信をサーバモードとして開始し、
クライアントとのハンドシェイクを実行します。
IO が読み込み待ち、もしくは書き込み待ちになった場合は例外を
発生させ、ハンドシェイクを中断します。IO が読み込み/書き込み
可能状態になってからこのメソッドをもう一度呼ぶと
ハンドシェイクを再開します。
@raise OpenSSL::SSL::SSLError ハンドシェイクに失敗した(VERIFY_PEER で
証明書の検証に失敗した場合や、プロトコル合意に失敗したなど)
場合に発生します
(実際は OpenSSL::S... -
OpenSSL
:: SSL :: SSLSocket # connect _ nonblock -> self (18340.0) -
ノンブロッキング方式で TLS/SSL 通信をクライアントモードとして開始し、 サーバとのハンドシェイクを実行します。
ノンブロッキング方式で
TLS/SSL 通信をクライアントモードとして開始し、
サーバとのハンドシェイクを実行します。
IO が読み込み待ち、もしくは書き込み待ちになった場合は例外を
発生させ、ハンドシェイクを中断します。IO が読み込み/書き込み
可能状態になってからこのメソッドをもう一度呼ぶと
ハンドシェイクを再開します。
@raise OpenSSL::SSL::SSLError ハンドシェイクに失敗した(VERIFY_PEER で
証明書の検証に失敗した場合や、プロトコル合意に失敗したなど)
場合に発生します
@raise OpenSSL::SSL::S... -
Mutex
_ m # mu _ unlock -> () (18322.0) -
ロックを解放します。ロック待ちになっていたスレッドの実行は再開されます。
ロックを解放します。ロック待ちになっていたスレッドの実行は再開されます。
@raise ThreadError ロックされていない場合に unlock を呼ぶと発生します -
Mutex
_ m # unlock -> () (18322.0) -
ロックを解放します。ロック待ちになっていたスレッドの実行は再開されます。
ロックを解放します。ロック待ちになっていたスレッドの実行は再開されます。
@raise ThreadError ロックされていない場合に unlock を呼ぶと発生します -
OpenSSL
:: Buffering # write _ nonblock(s) -> Integer (18322.0) -
文字列 s をノンブロッキングモードで書き込みます。
文字列 s をノンブロッキングモードで書き込みます。
成功した場合、書き込んだバイト数を返します。
1 バイトも書くことができず、ソケットの状態が変化するのを
待つ必要がある場合は例外を発生させます。
例外が発生した場合、内部のソケットが利用可能になってから
再びこのメソッドを呼んでください。
ただし内部バッファに書き込んでいないデータが残っている場合は、
まずバッファの内容をすべて出力してします。この時点で
ブロックする可能性があります。
基本的には IO#write_nonblock と同様です。しかし以下のような
違いもあります。
このメソッドはソケットが読み込み不可能(IO:... -
Socket
# connect _ nonblock(server _ sockaddr) -> 0 (18322.0) -
ソケットをノンブロッキングモードに設定した後、 connect(2) を呼び出します。
ソケットをノンブロッキングモードに設定した後、
connect(2) を呼び出します。
引数、返り値は Socket#connect と同じです。
connect が EINPROGRESS エラーを報告した場合、その例外(Errno::EINPROGRESS)
には IO::WaitWritable が Object#extend されます。
これを connect_nonblock をリトライするために使うことができます。
# Pull down Google's web page
require 'socket'
include Socket::Constants
... -
Socket
# recvfrom _ nonblock(maxlen , flags=0) -> [String , Addrinfo] (18322.0) -
ソケットをノンブロッキングモードに設定した後、 recvfrom(2) を呼び出します。
ソケットをノンブロッキングモードに設定した後、
recvfrom(2) を呼び出します。
引数、返り値は Socket#recvfrom と同じです。
recvfrom(2) がエラーになった場合、
EAGAIN, EINTR を含め例外 Errno::EXXX が発生します。
Errno::EWOULDBLOCK、Errno::EAGAIN のような待ってからリトライすることが
可能であることを意味する例外には、IO::WaitReadable が extend
されています。
@param maxlen ソケットから受けとるデータの最大値
@param flags フラグ
@rai... -
StringIO
# read _ nonblock(maxlen , outbuf = nil , exception: true) -> String | nil (18322.0) -
StringIO#readに似ていますが、 exception オプションに false を指定すると EOFError を発生させず nil を返します。
StringIO#readに似ていますが、 exception オプションに false を指定すると EOFError を発生させず nil を返します。
@param len 読み込みたい長さを整数で指定します。StringIO#read と同じです。
@param outbuf 読み込んだ文字列を出力するバッファを文字列で指定します。指定した文字列オブジェクトが
あらかじめ length 長の領域であれば、余計なメモリの割当てが行われません。指定した文字列の
長さが length と異なる場合、その文字列は一旦 length ... -
TCPServer
# accept _ nonblock -> TCPSocket (18322.0) -
ソケットをノンブロッキングモードに設定した後、 accept(2) を呼び出します。
ソケットをノンブロッキングモードに設定した後、
accept(2) を呼び出します。
返り値は TCPServer#accept と同じです。
accept(2) がエラーになった場合、
EAGAIN, EINTR を含め例外 Errno::EXXX が発生します。
@raise Errno::EXXX accept(2) がエラーになった場合に発生します。 -
StringIO
# write _ nonblock(obj) -> Integer (9322.0) -
自身に obj を書き込みます。StringIO#write と同じです。
自身に obj を書き込みます。StringIO#write と同じです。
@param obj 書き込みたいオブジェクトを指定します。
@raise IOError 自身が書き込み用にオープンされていなければ発生します。 -
Gem
:: Commands :: LockCommand # complain(message) -> () (9022.0) -
指定されたメッセージを表示します。--strict が有効な場合は例外が発生します。
指定されたメッセージを表示します。--strict が有効な場合は例外が発生します。
@param message 表示するメッセージを指定します。
@raise Gem::Exception コマンドラインオプションに --strict が指定されている場合に発生します。 -
Net
:: FTP # get(remotefile , localfile = File . basename(remotefile) , blocksize = DEFAULT _ BLOCKSIZE) -> nil (676.0) -
サーバ上のファイルを取得します。
サーバ上のファイルを取得します。
Net::FTP#binary の値に従って
Net::FTP#getbinaryfile もしくは
Net::FTP#gettextfile を呼びだします。
binary が偽のとき、つまりテキストモードの
ときには blocksize は無視されます。
@param remotefile 取得対象のリモートのファイル名を与えます。
@param localfile 取得したデータを格納するローカルのファイル名を与えます。
@param blocksize データ転送の単位をバイト単位で与えます。
@raise Net::FTPTempError... -
Net
:: FTP # get(remotefile , localfile = File . basename(remotefile) , blocksize = DEFAULT _ BLOCKSIZE) { |data| . . . . } -> nil (676.0) -
サーバ上のファイルを取得します。
サーバ上のファイルを取得します。
Net::FTP#binary の値に従って
Net::FTP#getbinaryfile もしくは
Net::FTP#gettextfile を呼びだします。
binary が偽のとき、つまりテキストモードの
ときには blocksize は無視されます。
@param remotefile 取得対象のリモートのファイル名を与えます。
@param localfile 取得したデータを格納するローカルのファイル名を与えます。
@param blocksize データ転送の単位をバイト単位で与えます。
@raise Net::FTPTempError... -
Net
:: FTP # getbinaryfile(remotefile , localfile = File . basename(remotefile) , blocksize = DEFAULT _ BLOCKSIZE) -> nil (676.0) -
サーバ上のファイルをバイナリモードで取得します。
サーバ上のファイルをバイナリモードで取得します。
サーバー上にある remotefile という名前のファイルを取得し、
ローカルの localfile という名前のファイルに保存します。
localfile が nil である場合には保存はしません。
データの転送は blocksize バイト毎に行なわれます。
ブロックが指定された場合は
データを blocksize バイト受信するごとに、そのデータを
ブロックに渡します。
@param remotefile 取得対象のリモートのファイル名を与えます。
@param localfile 取得したデータを格納するローカルのファイル... -
Net
:: FTP # getbinaryfile(remotefile , localfile = File . basename(remotefile) , blocksize = DEFAULT _ BLOCKSIZE) {|data| . . . } -> nil (676.0) -
サーバ上のファイルをバイナリモードで取得します。
サーバ上のファイルをバイナリモードで取得します。
サーバー上にある remotefile という名前のファイルを取得し、
ローカルの localfile という名前のファイルに保存します。
localfile が nil である場合には保存はしません。
データの転送は blocksize バイト毎に行なわれます。
ブロックが指定された場合は
データを blocksize バイト受信するごとに、そのデータを
ブロックに渡します。
@param remotefile 取得対象のリモートのファイル名を与えます。
@param localfile 取得したデータを格納するローカルのファイル... -
Net
:: FTP # put(localfile , remotefile = File . basename(localfile) , blocksize = DEFAULT _ BLOCKSIZE) -> nil (676.0) -
サーバへファイルを転送します。
サーバへファイルを転送します。
Net::FTP#binary の値に従って
Net::FTP#putbinaryfile もしくは
Net::FTP#puttextfile を呼びだします。
binary が偽のとき、つまりテキストモードの
ときには blocksize は無視されます。
@param localfile 転送するローカルのファイル名を与えます。
@param remotefile 転送データを保存するリモートのファイル名を与えます。
@param blocksize データ転送の単位をバイト単位で与えます。
@raise Net::FTPTempError 応答コ... -
Net
:: FTP # put(localfile , remotefile = File . basename(localfile) , blocksize = DEFAULT _ BLOCKSIZE) { |data| . . . . } -> nil (676.0) -
サーバへファイルを転送します。
サーバへファイルを転送します。
Net::FTP#binary の値に従って
Net::FTP#putbinaryfile もしくは
Net::FTP#puttextfile を呼びだします。
binary が偽のとき、つまりテキストモードの
ときには blocksize は無視されます。
@param localfile 転送するローカルのファイル名を与えます。
@param remotefile 転送データを保存するリモートのファイル名を与えます。
@param blocksize データ転送の単位をバイト単位で与えます。
@raise Net::FTPTempError 応答コ... -
Net
:: FTP # putbinaryfile(localfile , remotefile = File . basename(localfile) , blocksize = DEFAULT _ BLOCKSIZE) -> nil (676.0) -
サーバにファイルをバイナリモードで転送します。
サーバにファイルをバイナリモードで転送します。
ローカルの localfile という名前のファイルを読みだし、
サーバー上の remotefile という名前のファイルに保存します。
データの転送は blocksize バイト毎に行なわれます。
ブロックが指定された場合は
データを blocksize バイト転送するごとに、そのデータを
ブロックに渡します。
@param localfile 転送するローカルのファイル名を与えます。
@param remotefile 転送データを保存するリモートのファイル名を与えます。
@param blocksize データ転送の単位をバイト単... -
Net
:: FTP # putbinaryfile(localfile , remotefile = File . basename(localfile) , blocksize = DEFAULT _ BLOCKSIZE) {|data| . . . } -> nil (676.0) -
サーバにファイルをバイナリモードで転送します。
サーバにファイルをバイナリモードで転送します。
ローカルの localfile という名前のファイルを読みだし、
サーバー上の remotefile という名前のファイルに保存します。
データの転送は blocksize バイト毎に行なわれます。
ブロックが指定された場合は
データを blocksize バイト転送するごとに、そのデータを
ブロックに渡します。
@param localfile 転送するローカルのファイル名を与えます。
@param remotefile 転送データを保存するリモートのファイル名を与えます。
@param blocksize データ転送の単位をバイト単... -
Net
:: FTP # retrbinary(cmd , blocksize , rest _ offset = nil) -> nil (376.0) -
サーバーに cmd で指定されたコマンドを送り、バイナリデータを 取り寄せます。
サーバーに cmd で指定されたコマンドを送り、バイナリデータを
取り寄せます。
blocksize で指定されたバイト単位でデータを
読み込み、ブロックに渡します。
rest_offset が省略されなかった場合は、cmdを送る前に
REST コマンドを送り、指定したバイト数の位置から
転送を開始します。
@param cmd コマンドを文字列で与えます。
@param blocksize 読み込み単位をバイト単位で与えます。
@param rest_offset REST コマンドに与えるオフセットを与えます。
@raise Net::FTPTempError 応答コードが 4... -
Net
:: FTP # retrbinary(cmd , blocksize , rest _ offset = nil) {|data| . . . } -> nil (376.0) -
サーバーに cmd で指定されたコマンドを送り、バイナリデータを 取り寄せます。
サーバーに cmd で指定されたコマンドを送り、バイナリデータを
取り寄せます。
blocksize で指定されたバイト単位でデータを
読み込み、ブロックに渡します。
rest_offset が省略されなかった場合は、cmdを送る前に
REST コマンドを送り、指定したバイト数の位置から
転送を開始します。
@param cmd コマンドを文字列で与えます。
@param blocksize 読み込み単位をバイト単位で与えます。
@param rest_offset REST コマンドに与えるオフセットを与えます。
@raise Net::FTPTempError 応答コードが 4... -
Net
:: FTP # storbinary(cmd , file , blocksize , rest _ offset = nil) -> nil (376.0) -
サーバーに cmd で指定されたコマンドを送り、バイナリデータを 送ります。
サーバーに cmd で指定されたコマンドを送り、バイナリデータを
送ります。
送るデータは IO のインスタンスを
file で指定します。
(実際には StringIO のような IO とメソッドレベルで
互換するオブジェクトであればなんでもかまいません)。
blocksize で指定されたバイト単位で file からデータを読みこみ、
サーバに送ります。
rest_offset が省略されなかった場合は、cmdを送る前に
REST コマンドを送り、指定したバイト数の位置から
転送を開始します。
ブロックが指定された場合には、転送するデータを blocksize ごとに
ブロックに... -
Net
:: FTP # storbinary(cmd , file , blocksize , rest _ offset = nil) {|data| . . . } -> nil (376.0) -
サーバーに cmd で指定されたコマンドを送り、バイナリデータを 送ります。
サーバーに cmd で指定されたコマンドを送り、バイナリデータを
送ります。
送るデータは IO のインスタンスを
file で指定します。
(実際には StringIO のような IO とメソッドレベルで
互換するオブジェクトであればなんでもかまいません)。
blocksize で指定されたバイト単位で file からデータを読みこみ、
サーバに送ります。
rest_offset が省略されなかった場合は、cmdを送る前に
REST コマンドを送り、指定したバイト数の位置から
転送を開始します。
ブロックが指定された場合には、転送するデータを blocksize ごとに
ブロックに... -
ThreadsWait
# next _ wait(nonblock = nil) -> Thread (340.0) -
指定したスレッドのどれかが終了するまで待ちます。
指定したスレッドのどれかが終了するまで待ちます。
@param nonblock true を与えると、キューが空の時、例外 ThreadsWait::ErrNoFinishedThread が発生します。
@raise ErrNoWaitingThread 終了をまつスレッドが存在しない時、発生します。
@raise ErrNoFinishedThread nonblock がtrue でかつ、キューが空の時、発生します。
#使用例
require 'thwait'
threads = []
2.times {|i|
threads << Thread.n... -
Array
# combination(n) {|c| block } -> self (322.0) -
サイズ n の組み合わせをすべて生成し、それを引数としてブロックを実行します。
サイズ n の組み合わせをすべて生成し、それを引数としてブロックを実行します。
得られる組み合わせの順序は保証されません。ブロックなしで呼び出されると、組み合わせ
を生成する Enumerator オブジェクトを返します。
@param n 生成される配列のサイズを整数で指定します。
整数以外のオブジェクトを指定した場合は to_int メソッドによる暗
黙の型変換を試みます。
@raise TypeError 引数に整数以外の(暗黙の型変換が行えない)オブジェクトを
指定した場合に発生します。
//emlist[... -
Array
# cycle(n=nil) {|obj| block } -> nil (322.0) -
配列の全要素を n 回(nilの場合は無限に)繰り返しブロックを呼びだします。
配列の全要素を n 回(nilの場合は無限に)繰り返しブロックを呼びだします。
ブロックを省略した場合は Enumerator を返します。
@param n 繰り返したい回数を整数で指定します。
整数以外のオブジェクトを指定した場合は to_int メソッドによる暗
黙の型変換を試みます。
@raise TypeError 引数に整数以外の(暗黙の型変換が行えない)オブジェクトを
指定した場合に発生します。
//emlist[例][ruby]{
a = ["a", "b", "c"]
a.cycle {|x| p... -
Array
# permutation(n = self . length) { |p| block } -> self (322.0) -
サイズ n の順列をすべて生成し,それを引数としてブロックを実行します。
サイズ n の順列をすべて生成し,それを引数としてブロックを実行します。
引数を省略した場合は配列の要素数と同じサイズの順列に対してブロックを実
行します。
得られる順列の順序は保証されません。ブロックなしで呼び出されると, 順列
を生成する Enumerator オブジェクトを返します。
@param n 生成する配列のサイズを整数で指定します。
整数以外のオブジェクトを指定した場合は to_int メソッドによる暗
黙の型変換を試みます。
@raise TypeError 引数に整数以外の(暗黙の型変換が行えない)オブジェクトを
... -
Enumerator
:: Lazy # enum _ for(method = :each , *args) {|*args| block} -> Enumerator :: Lazy (322.0) -
Object#to_enum と同じですが、Enumerator::Lazy を返します。
Object#to_enum と同じですが、Enumerator::Lazy を返します。
to_enum は「ブロック付きで呼ぶとループを実行し、ブロックを省略した場合は
Enumerator を返す」ようなメソッドを定義するときによく使われます。
このときに lazy 性が正しく引き継がれるように、Lazy#to_enum は
素のEnumerator ではなく Enumerator::Lazy を返すようになっています。
//emlist[例][ruby]{
module Enumerable
# 要素をn回ずつ繰り返すメソッド
# 例:[1,2,3].repeat(2) ... -
Enumerator
:: Lazy # to _ enum(method = :each , *args) {|*args| block} -> Enumerator :: Lazy (322.0) -
Object#to_enum と同じですが、Enumerator::Lazy を返します。
Object#to_enum と同じですが、Enumerator::Lazy を返します。
to_enum は「ブロック付きで呼ぶとループを実行し、ブロックを省略した場合は
Enumerator を返す」ようなメソッドを定義するときによく使われます。
このときに lazy 性が正しく引き継がれるように、Lazy#to_enum は
素のEnumerator ではなく Enumerator::Lazy を返すようになっています。
//emlist[例][ruby]{
module Enumerable
# 要素をn回ずつ繰り返すメソッド
# 例:[1,2,3].repeat(2) ... -
Thread
:: Mutex # sleep(timeout = nil) -> Integer (40.0) -
与えられた秒数の間ロックを解除してスリープして、実行後にまたロックします。
与えられた秒数の間ロックを解除してスリープして、実行後にまたロックします。
@param timeout スリープする秒数を指定します。省略するとスリープし続けます。
@return スリープしていた秒数を返します。
@raise ThreadError 自身がカレントスレッドによってロックされていない場合に発生します。
[注意] 2.0 以降ではスリープ中でも、シグナルを受信した場合などに実行が再
開(spurious wakeup)される場合がある点に注意してください。
//emlist[例][ruby]{
m = Mutex.new
th = Thread.new do
...