33件ヒット
[1-33件を表示]
(0.021秒)
検索結果
先頭3件
-
Thread
# raise(error _ type , message , traceback) -> () (18132.0) -
自身が表すスレッドで強制的に例外を発生させます。
...nel.#raise を参照してください。
@param message Kernel.#raise を参照してください。
@param traceback Kernel.#raise を参照してください。
Thread.new {
sleep 1
Thread.main.raise "foobar"
}
begin
sleep
rescue
p $!, $@
end
=> #<RuntimeError: fo... -
Thread
. handle _ interrupt(hash) { . . . } -> object (43.0) -
スレッドの割り込みのタイミングを引数で指定した内容に変更してブロックを 実行します。
...ングを引数で指定した内容に変更してブロックを
実行します。
「割り込み」とは、非同期イベントや Thread#raise や
Thread#kill、Signal.#trap(未サポート)、メインスレッドの終了
(メインスレッドが終了すると、他のスレッドも終......れるまで延期されます。本
メソッドは sigprocmask(3) に似ています。
@return ブロックの評価結果を返します。
@raise ArgumentError ブロックを指定しなかった場合に発生します。
=== 注意
非同期割り込みの利用は難しいため、ス......い。
=== 使い方
例:Thread#raise 発生のタイミングを制御する例
th = Thread.new do
Thread.handle_interrupt(RuntimeError => :never) {
begin
# 安全にリソースの割り当てが可能
Thread.handle_interrupt(RuntimeError => :immediate) {
#... -
Thread
. pending _ interrupt?(error = nil) -> bool (19.0) -
非同期割り込みのキューが空かどうかを返します。
...します。
Thread.handle_interrupt は非同期割り込みの発生を延期させるのに使
用しますが、本メソッドは任意の非同期割り込みが存在するかどうかを確認す
るのに使用します。
本メソッドが true を返した場合、Thread.handle_interru......いた例外をただちに発生させる。
def Thread.kick_interrupt_immediately
Thread.handle_interrupt(Object => :immediate) {
Thread.pass
}
end
=== 使い方
th = Thread.new{
Thread.handle_interrupt(RuntimeError => :on_blocking){
while true
.........if Thread.pending_interrupt?
Thread.handle_interrupt(Object => :immediate){}
end
...
end
}
}
...
th.raise # スレッド停止。
この例は以下のように記述する事もできます。
flag = true
th = Thread.new{
Thread.handle_in...