るりまサーチ

最速Rubyリファレンスマニュアル検索!
161件ヒット [1-100件を表示] (0.198秒)
トップページ > クエリ:I[x] > クエリ:i[x] > クエリ:new[x] > クエリ:signal[x]

別のキーワード

  1. _builtin to_i
  2. fiddle to_i
  3. matrix elements_to_i
  4. kernel $-i
  5. csv to_i

検索結果

<< 1 2 > >>

Thread::ConditionVariable#signal -> self (30319.0)

状態変数を待っているスレッドを1つ再開します。再開された スレッドは Thread::ConditionVariable#wait で指定した mutex のロックを試みます。

...: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(mut...
...ex)
end
puts "a2"
}
}
}

Thread.start {
mutex.synchronize {
flg = false
cv.signal
}
}

sleep 1

# => a1
# => a1
# => a1
# => a2
//}...

SignalException.new(sig_number, sig_name) -> SignalException (27845.0)

引数で指定したシグナルに関する SignalException オブジェクトを生成して返 します。

...引数で指定したシグナルに関する SignalException オブジェクトを生成して返
します。

引数は Signal.#list に含まれるもののいずれかを指定する必要があり
ます。

@param sig_name シグナル名を Symbol オブジェクト、文字列のいずれ...
...sig_number シグナル番号を指定します。整数以外のオブジェクトを指
定した場合は to_int メソッドによる暗黙の型変換を試み
ます。

//emlist[例][ruby]{
signal
_number = Signal.list["INT"]
se = SignalException.new(signal_...
...number) # => #<SignalException: SIGINT>
se.signo # => 2
//}

//emlist[例][ruby]{
se = SignalException.new("INT") # => #<SignalException: SIGINT>
se.signm # => "SIGINT"
//}

@see Signal.#list...

SignalException.new(sig_name) -> SignalException (27645.0)

引数で指定したシグナルに関する SignalException オブジェクトを生成して返 します。

...引数で指定したシグナルに関する SignalException オブジェクトを生成して返
します。

引数は Signal.#list に含まれるもののいずれかを指定する必要があり
ます。

@param sig_name シグナル名を Symbol オブジェクト、文字列のいずれ...
...sig_number シグナル番号を指定します。整数以外のオブジェクトを指
定した場合は to_int メソッドによる暗黙の型変換を試み
ます。

//emlist[例][ruby]{
signal
_number = Signal.list["INT"]
se = SignalException.new(signal_...
...number) # => #<SignalException: SIGINT>
se.signo # => 2
//}

//emlist[例][ruby]{
se = SignalException.new("INT") # => #<SignalException: SIGINT>
se.signm # => "SIGINT"
//}

@see Signal.#list...

SignalException.new(sig_number) -> SignalException (27645.0)

引数で指定したシグナルに関する SignalException オブジェクトを生成して返 します。

...引数で指定したシグナルに関する SignalException オブジェクトを生成して返
します。

引数は Signal.#list に含まれるもののいずれかを指定する必要があり
ます。

@param sig_name シグナル名を Symbol オブジェクト、文字列のいずれ...
...sig_number シグナル番号を指定します。整数以外のオブジェクトを指
定した場合は to_int メソッドによる暗黙の型変換を試み
ます。

//emlist[例][ruby]{
signal
_number = Signal.list["INT"]
se = SignalException.new(signal_...
...number) # => #<SignalException: SIGINT>
se.signo # => 2
//}

//emlist[例][ruby]{
se = SignalException.new("INT") # => #<SignalException: SIGINT>
se.signm # => "SIGINT"
//}

@see Signal.#list...

Mutex#synchronize { ... } -> object (12212.0)

mutex をロックし、ブロックを実行します。実行後に必ず mutex のロックを解放します。

...@raise ThreadError self 既にカレントスレッドにロックされている場合に発
生します。
また、Signal.#trap に指定したハンドラ内で実行
した場合に発生します。

//emlist[例][ruby]{
m = Mutex.new
r...
...esult = m.synchronize do
m.locked? # => true
# critical part
"result"
end
m.locked? # => false
result # => "result"
//}...

絞り込み条件を変える

Thread#ignore_deadlock=(bool) (12212.0)

デッドロック検知を無視する機能をon/offします。デフォルト値はfalseです。

...

trueを渡すとデッドロックを検知しなくなります。

//emlist[][ruby]{
Thread.ignore_deadlock = true
queue = Thread::Queue.new

trap(:SIGUSR1){queue.push "Received signal"}

# ignore_deadlockがfalseだとエラーが発生する
puts queue.pop
//}

@see Thread#ignore_deadlock...

Thread.handle_interrupt(hash) { ... } -> object (12212.0)

スレッドの割り込みのタイミングを引数で指定した内容に変更してブロックを 実行します。

...数で指定した内容に変更してブロックを
実行します。

「割り込み」とは、非同期イベントや Thread#raise や
Thread#kill、Signal.#trap(未サポート)、メインスレッドの終了
(メインスレッドが終了すると、他のスレッドも終了されま...
...
Symbol が値の Hash を指定します。
値の内容は以下のいずれかです。

: :immediate

すぐに割り込みます。

: :on_blocking

ブロッキング処理(後述)の間は割り込みが発生します。

: :never

まったく割り込みま...
...れた非同期割り込みは再度有効にされるまで延期されます。本
メソッドは sigprocmask(3) に似ています。

@return ブロックの評価結果を返します。

@raise ArgumentError ブロックを指定しなかった場合に発生します。

=== 注意

非同...

Thread::Mutex#synchronize { ... } -> object (12212.0)

mutex をロックし、ブロックを実行します。実行後に必ず mutex のロックを解放します。

...@raise ThreadError self 既にカレントスレッドにロックされている場合に発
生します。
また、Signal.#trap に指定したハンドラ内で実行
した場合に発生します。

//emlist[例][ruby]{
m = Mutex.new
r...
...esult = m.synchronize do
m.locked? # => true
# critical part
"result"
end
m.locked? # => false
result # => "result"
//}...

Thread::ConditionVariable (12072.0)

スレッドの同期機構の一つである状態変数を実現するクラスです。

...一つである状態変数を実現するクラスです。

以下も ConditionVariable を理解するのに参考になります。

https://ruby-doc.com/docs/ProgrammingRuby/html/tut_threads.html#UF

=== Condition Variable とは

あるスレッド A が排他領域で動いていたとしま...
...状況を解決するのが Condition Variable です。

スレッド a で条件(リソースが空いているかなど)が満たされるまで wait メソッドで
スレッドを止めます。他のスレッド b において条件が満たされたなら signal
メソッドでスレッド a...
...mutex = Mutex.new
cv = ConditionVariable.new

a = Thread.start {
mutex.synchronize {
...
while (条件が満たされない)
cv.wait(mutex)
end
...
}
}

b = Thread.start {
mutex.synchronize {
#...

Monitor (12030.0)

スレッドの同期機構としてのモニター機能を提供するクラスです。 また同じスレッドから何度も lock できる Mutex としての機能も提供します。

...onitorMixin を include し、いくつかの別名を定義したクラスです。

=== 例

//emlist[消費者、生産者問題の例][ruby]{
require 'monitor'

buf = []
mon = Monitor.new
empty_cond = mon.new_cond

# consumer
Thread.start do
loop do
mon.synchronize do
empty_cond.wait...
...hile { buf.empty? }
print buf.shift
end
end
end

# producer
while line = ARGF.gets
mon.synchronize do
buf.push(line)
empty_cond.signal
end
end
//}

2回ロックしてもデッドロックにならない例です。

//emlist[デッドロックにならない例][ruby]{
requi...
...re 'monitor'
mon = Monitor.new
mon.synchronize {
mon.synchronize {
}
}
//}

Thread::Mutex ではデッドロックになります。

//emlist[Mutex でデッドロックになる例][ruby]{
mx = Mutex.new
mx.synchronize {
mx.synchronize {
}
}
# => deadlock; recursive locking (ThreadError)
/...

絞り込み条件を変える

MonitorMixin (12012.0)

スレッドの同期機構としてのモニター機能を提供するモジュールです。

...ラスに Module#include したり、オブジェクトに
Object#extend したりすることでそのクラス/オブジェクトに
モニタ機能を追加します。

=== 例

//emlist[消費者、生産者問題の例][ruby]{
require 'monitor'

buf = []
buf.extend(MonitorMixin) # 配列にモ...
...ty_cond = buf.new_cond # 配列が空であるかないかを通知する条件変数

# consumer
Thread.start do
loop do
buf.synchronize do # ロックする
empty_cond.wait_while { buf.empty? } # 配列が空である間はロックを開放して待つ
print buf.shift # 配列...
...# producer
while line = ARGF.gets
buf.synchronize do # ロックする
buf.push(line) # 配列を変更(追加)
empty_cond.signal # 配列に要素が追加されたことを条件変数を通して通知
end # ここでロックを開放
end
//}

=== 初期化

MonitorMixin は初期...
<< 1 2 > >>