クラス
- File (11)
-
File
:: Stat (22) - IO (22)
- Mutex (2)
- SignalException (22)
- Thread (161)
-
Thread
:: ConditionVariable (22) -
Thread
:: Mutex (9) - ThreadGroup (22)
- ThreadsWait (24)
キーワード
- <=> (11)
-
abort
_ on _ exception (11) - add (11)
-
all
_ waits (6) - backtrace (11)
-
backtrace
_ locations (22) - birthtime (11)
- broadcast (11)
- empty? (6)
- enclose (11)
- eof (11)
- eof? (11)
- exit (11)
- finished? (6)
- flock (11)
- join (22)
- kill (11)
-
next
_ wait (6) - priority= (11)
- run (11)
-
safe
_ level (7) - signal (11)
- signm (11)
- signo (11)
- status (11)
- terminate (11)
- value (11)
- wakeup (11)
検索結果
先頭5件
-
Mutex
# sleep(timeout = nil) -> Integer (24226.0) -
与えられた秒数の間ロックを解除してスリープして、実行後にまたロックします。
...グナルを受信した場合などに実行が再
開(spurious wakeup)される場合がある点に注意してください。
//emlist[例][ruby]{
m = Mutex.new
th = Thread.new do
m.lock
m.sleep(2)
end
th.status # => "run"
sleep 1
th.status # => "sleep"
sleep 1
th.status # => false
//}... -
Thread
:: Mutex # sleep(timeout = nil) -> Integer (24226.0) -
与えられた秒数の間ロックを解除してスリープして、実行後にまたロックします。
...グナルを受信した場合などに実行が再
開(spurious wakeup)される場合がある点に注意してください。
//emlist[例][ruby]{
m = Mutex.new
th = Thread.new do
m.lock
m.sleep(2)
end
th.status # => "run"
sleep 1
th.status # => "sleep"
sleep 1
th.status # => false
//}......@param timeout スリープする秒数を指定します。省略するとスリープし続けます。
@return タイムアウトした時は nil を、それ以外はスリープしていた秒数を返します。
@raise ThreadError 自身がカレントスレッドによってロックさ... -
Thread
# backtrace _ locations(range) -> [Thread :: Backtrace :: Location] | nil (6213.0) -
スレッドの現在のバックトレースを Thread::Backtrace::Location の配 列で返します。
...ースを Thread::Backtrace::Location の配
列で返します。
引数で指定した値が範囲外の場合、スレッドがすでに終了している場合は nil
を返します。
@param start 開始フレームの位置を数値で指定します。
@param length 取得するフレー......ます。
Kernel.#caller_locations と似ていますが、本メソッドは self に限定
した情報を返します。
//emlist[例][ruby]{
thread = Thread.new { sleep 1 }
thread.run
thread.backtrace_locations # => ["/path/to/test.rb:1:in `sleep'", "/path/to/test.rb:1:in `block in <main>'"]
/....../}
@see Thread::Backtrace::Location... -
Thread
# backtrace _ locations(start = 0 , length = nil) -> [Thread :: Backtrace :: Location] | nil (6213.0) -
スレッドの現在のバックトレースを Thread::Backtrace::Location の配 列で返します。
...ースを Thread::Backtrace::Location の配
列で返します。
引数で指定した値が範囲外の場合、スレッドがすでに終了している場合は nil
を返します。
@param start 開始フレームの位置を数値で指定します。
@param length 取得するフレー......ます。
Kernel.#caller_locations と似ていますが、本メソッドは self に限定
した情報を返します。
//emlist[例][ruby]{
thread = Thread.new { sleep 1 }
thread.run
thread.backtrace_locations # => ["/path/to/test.rb:1:in `sleep'", "/path/to/test.rb:1:in `block in <main>'"]
/....../}
@see Thread::Backtrace::Location... -
File
# flock(operation) -> 0 | false (6125.0) -
ファイルをロックします。
...クされます。
ロックの取得に成功した場合は 0 を返します。
File::LOCK_NB (ノンブロッキング) を指定すると、本来ならブロックされる場合に
ブロックされずに false を返すようになります。
@param operation ロックに対する操作......rror 自身が close されている場合に発生します。
@raise Errno::EXXX operation に不正な整数を与えた場合などに発生します。
引数 operation に有効な定数は以下の通りです。定数は File::Constants で定義されていますが、
File クラスの......親クラスの IO が File::Constants をインクルードしているので、
これらの定数は File::LOCK_SH などとして参照可能です。
: LOCK_SH
共有ロック。複数のプロセスが同時にロックを共有できます。
システムによってはロック対象の... -
Thread
# value -> object (6119.0) -
スレッド self が終了するまで待ち(Thread#join と同じ)、 そのスレッドのブロックが返した値を返します。スレッド実行中に例外が 発生した場合には、その例外を再発生させます。
...スレッド self が終了するまで待ち(Thread#join と同じ)、
そのスレッドのブロックが返した値を返します。スレッド実行中に例外が
発生した場合には、その例外を再発生させます。
スレッドが Thread#kill によって終了した場合......例です。
threads = []
threads.push(Thread.new { n = rand(5); sleep n; n })
threads.push(Thread.new { n = rand(5); sleep n; n })
threads.push(Thread.new { n = rand(5); sleep n; n })
threads.each {|t| p t.value}
最後の行で、待ち合わせを行っていることがわか......りにくいと思うなら以下
のように書くこともできます。
threads.each {|t| p t.join.value}... -
Thread
# safe _ level -> Integer (6107.0) -
self のセーフレベルを返します。カレントスレッドの safe_level は、$SAFE と同じです。
...self のセーフレベルを返します。カレントスレッドの
safe_level は、$SAFE と同じです。
Ruby 2.6 から$SAFEがプロセスグローバルになったため、このメソッドは obsolete になりました。
セーフレベルについてはspec/safelevelを参照し......てください。
//emlist[例][ruby]{
thr = Thread.new { $SAFE = 1; sleep }
Thread.current.safe_level # => 0
thr.safe_level # => 1
//}......ッドは obsolete になりました。
単純に $SAFE をチェックしてください。
セーフレベルについてはspec/safelevelを参照してください。
//emlist[例][ruby]{
thr = Thread.new { $SAFE = 1; sleep }
Thread.current.safe_level # => 0
thr.safe_level # =>... -
Thread
:: ConditionVariable # signal -> self (6107.0) -
状態変数を待っているスレッドを1つ再開します。再開された スレッドは Thread::ConditionVariable#wait で指定した mutex のロックを試みます。
...ad::ConditionVariable#wait
で指定した mutex のロックを試みます。
@return 常に self を返します。
//emlist[例][ruby]{
mutex = Mutex.new
cv = ConditionVariable.new
flg = true
3.times {
Thread.start {
mutex.synchronize {
puts "a1"
while (flg)
cv.wait(......mutex)
end
puts "a2"
}
}
}
Thread.start {
mutex.synchronize {
flg = false
cv.signal
}
}
sleep 1
# => a1
# => a1
# => a1
# => a2
//}... -
ThreadGroup
# enclose -> self (6107.0) -
自身への ThreadGroup#add によるスレッドの追加・削除を禁止します。 enclose された ThreadGroup に追加や削除を行うと例外 ThreadError が発生します。
...るスレッドの追加・削除を禁止します。
enclose された ThreadGroup に追加や削除を行うと例外 ThreadError が発生します。
ただし、Thread.new によるスレッドの追加は禁止されません。enclose されたスレッドグループ A に
属するスレ......new.enclose
thg.add Thread.new {}
=> -:2:in `add': can't move to the enclosed thread group (ThreadError)
削除の例:
thg1 = ThreadGroup.new
thg2 = ThreadGroup.new
th = Thread.new {sleep 1}
thg1.add th
thg1.enclose
thg2.add th
=> -:8:in `add': can't move from the enclosed th... -
ThreadsWait
# all _ waits -> () (6107.0) -
指定されたスレッドすべてが終了するまで待ちます。 ブロックが与えられた場合、スレッド終了時にブロックを評価します。
...評価します。
使用例
require 'thwait'
threads = []
5.times {|i|
threads << Thread.new { sleep 1; p Thread.current }
}
thall = ThreadsWait.new(*threads)
thall.all_waits{|th|
printf("end %s\n", th.inspect)
}
# 出力例
#=> #<Thread:0x214bc run>
#=> #<Thread... -
Thread
# kill -> self (3113.0) -
スレッドの実行を終了させます。終了時に ensure 節が実行されます。
...ad#value の返り値は不定です。
自身がメインスレッドであるか最後のスレッドである場合は、プロセスを Kernel.#exit(0)
により終了します。
Kernel.#exit と違い例外 SystemExit を発生しません。
th1 = Thread.new do
begin
sleep 10......ensure
p "this will be displayed"
end
end
sleep 0.1
th1.kill
#=> "this will be displayed"
@see Kernel.#exit, Kernel.#exit!...