るりまサーチ

最速Rubyリファレンスマニュアル検索!
439件ヒット [101-200件を表示] (0.138秒)
トップページ > クエリ:t[x] > クエリ:ThreadError[x]

別のキーワード

  1. openssl t61string
  2. asn1 t61string
  3. t61string new
  4. matrix t
  5. fiddle type_size_t

ライブラリ

モジュール

キーワード

検索結果

<< < 1 2 3 4 ... > >>

MonitorMixin#mon_enter -> () (6106.0)

モニターをロックします。

...スレッドは待ちます。

T
hread::Mutex#lock に相当します。
Mutex#lock と違うのは現在のモニターの所有者が現在実行されているスレッドである場合、
何度でもロックできる点です。ロックした回数だけ mon_exit を呼ばなければモニ...
...

//emlist[例][ruby]{
require 'monitor'
buf = []
buf.extend(MonitorMixin)
buf.mon_enter
buf.mon_enter
//}

Mutex#lock ではデッドロックが起きます。

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

MonitorMixin#mon_exit -> () (6106.0)

モニターのロックを解放します。

...します。

mon_enter でロックした回数だけ mon_exit
呼ばなければモニターは解放されません。

モニターが解放されればモニターのロック待ちになっていた
スレッドが一つ実行を再開します。

@raise ThreadError ロックを持って...

MonitorMixin::ConditionVariable#wait(timeout = nil) -> bool (6106.0)

モニタのロックを開放し、現在のスレッドを停止します。

...クを保持している必要があります。

MonitorMixin::ConditionVariable#signal や
MonitorMixin::ConditionVariable#broadcast
で起こされるまでスレッドは停止し続けます。

t
imeout を与えた場合は最大 timeout 秒まで停止した後にスレッドを
再開しま...
...よって危険領域(critical section)上で動作している
スレッドはただ一つになり、排他を実現します。

t
rue を返します。timeout が与えられていて待ち時間が timeout
越えた場合は false を返します。

@param timeout タイムアウトまで...
...の秒数。指定しなかった場合はタイムアウトしません。

@raise ThreadError ロックを持っていないスレッドがこのメソッドを呼びだした場合に発生します

@see MonitorMixin::ConditionVariable#wait_while, MonitorMixin::ConditionVariable#wait_until...

MonitorMixin::ConditionVariable#wait_while { ... } -> () (6106.0)

モニタのロックを開放し、現在のスレッドを ブロックで指定した条件を満たしている間停止します。

...、現在のスレッドを
ブロックで指定した条件を満たしている間停止します。

MonitorMixin::ConditionVariable#signal や
MonitorMixin::ConditionVariable#broadcast
スレッドが起こされると、ロックを取得し、ブロックを評価し
その結果によっ...
...このメソッドから抜け処理を継続するか
再びロックを開放しスレッドを停止するかを決めます。

@raise ThreadError ロックを持っていないスレッドがこのメソッドを呼びだした場合に発生します
@see MonitorMixin::ConditionVariable#wait...

Monitor (6006.0)

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

...る Mutex としての機能も提供します。

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

=== 例

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

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

# consumer
T
hread.start do...
...ronize do
empty_cond.wait_while { 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[デッドロッ...
...'monitor'
mon = Monitor.new
mon.synchronize {
mon.synchronize {
}
}
//}

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

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

絞り込み条件を変える

ruby 1.6 feature (3216.0)

ruby 1.6 feature ruby version 1.6 は安定版です。この版での変更はバグ修正がメイン になります。

...6 feature
ruby version 1.6 は安定版です。この版での変更はバグ修正がメイン
になります。

((<stable-snapshot|URL:ftp://ftp.netlab.co.jp/pub/lang/ruby/stable-snapshot.tar.gz>)) は、日々更新される安定版の最新ソースです。

== 1.6.8 (2002-12-24) -> stable...
...-snapshot

: 2003-01-22: errno

EAGAIN と EWOULDBLOCK が同じ値のシステムで、EWOULDBLOCK がなくなっ
ていました。現在は、このようなシステムでは、EWOULDBLOCK は、EAGAIN
として定義されています。(これは 1.6.7 とは異なる挙動です...
...>))

((<Thread>))#run を呼ぶ直前にスレッドが死んでいた場合に ((<ThreadError>))
が発生する問題に対処しました。((<ruby-dev:13194>))

: Ctrl-C (Interrupt)が効かなくなる

((<ruby-dev:13195>))

t
h1 = Thread.start {
begin
T
hread.stop
e...

ThreadGroup#add(thread) -> self (3160.0)

スレッド thread が属するグループを自身に変更します。

...スレッド thread が属するグループを自身に変更します。

@param thread 自身に加えたいスレッドを指定します。

@raise ThreadError 自身が freeze されているか enclose されている場合に、発生します。また引数 thread が属する ThreadGroup...
...ist[例][ruby]{
puts "Initial group is #{ThreadGroup::Default.list}"
# => Initial group is [#<Thread:0x4a49168 run>]

t
g = ThreadGroup.new
t
1 = Thread.new { sleep }
t
2 = Thread.new { sleep }
puts "t1 is #{t1}" # => t1 is #<Thread:0x50bef60>
puts "t2 is #{t2}" # => t2 is #<Thread:0x50beed0>
t
g.add(t1...
...)
puts "Initial group now #{ThreadGroup::Default.list}"
# => Initial group now [#<Thread:0x3039168 run>, #<Thread:0x50beed0 run>]
puts "tg group now #{tg.list}"
# => tg group now [#<Thread:0x50bef60 run>]
//}...

Thread#join(limit) -> self | nil (3118.0)

スレッド self の実行が終了するまで、カレントスレッドを停止し ます。self が例外により終了していれば、その例外がカレントス レッドに対して発生します。

...ドに対して発生します。

limit を指定して、limit 秒過ぎても自身が終了しない場合、nil を返します。

@param limit タイムアウトする時間を整数か小数で指定します。単位は秒です。

@raise ThreadError join を実行することによって...
...

以下は、生成したすべてのスレッドの終了を待つ例です。

t
hreads = []
t
hreads.push(Thread.new { n = rand(5); sleep n; n })
t
hreads.push(Thread.new { n = rand(5); sleep n; n })
t
hreads.push(Thread.new { n = rand(5); sleep n; n })

t
hreads.each {|t| t.join}...

Thread.fork(*arg) {|*arg| ... } -> Thread (3118.0)

スレッドを生成して、ブロックの評価を開始します。 生成したスレッドを返します。

...を生成して、ブロックの評価を開始します。
生成したスレッドを返します。

基本的に Thread.new と同じですが、
new メソッドと違い initialize メソッドを呼びません。

@param arg 引数 arg はそのままブロックに渡されます。スレ...
...開始と同時にその
スレッド固有のローカル変数に値を渡すために使用します。

@raise ThreadError 現在のスレッドが属する ThreadGroup が freeze されている場合に発生します。またブロックを与えられずに呼ばれた場合にも...
...ードは間違いです。スレッドの実行が開始される前に
変数 i が書き変わる可能性があるからです。

for i in 1..5
T
hread.start { p i }
end

上の例は以下のように書き直すべきです。

for i in 1..5
T
hread.start(i) {|t| p t }
end...
<< < 1 2 3 4 ... > >>