るりまサーチ

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

別のキーワード

  1. drb thread
  2. thread join
  3. thread kill
  4. thread exit
  5. thread abort_on_exception

ライブラリ

クラス

モジュール

検索結果

<< 1 2 > >>

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

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

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

ブロックが最後に評価した値を返します。

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

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

Thread.exclusive { ... } -> object (21036.0)

VM グローバルの Mutex をロックし、ブロックを実行します。

...ます。

このクラスメソッドの挙動は 1.8 以前とは違います。
Thread
.exclusive は VM グローバルの Thread::MUTEX_FOR_THREAD_EXCLUSIVE の
synchronize
を呼び出しているだけで、Thread.exclusive していないスレッドは動きます。
Mutex や Monitor など...
...ッドの挙動は 1.8 以前とは違います。
Thread
.exclusive は VM グローバルの Thread::MUTEX_FOR_THREAD_EXCLUSIVE の
synchronize
を呼び出しているだけで、Thread.exclusive していないスレッドは動きます。
Thread
::Mutex や Monitor などの他の排他制御の...
...クラスメソッドの挙動は 1.8 以前とは違います。
Thread
.exclusive は VM グローバルの Mutex の
synchronize
を呼び出しているだけで、Thread.exclusive していないスレッドは動きます。
Thread
::Mutex や Monitor などの他の排他制御の方法を検...

Shell.debug_output_synchronize (6113.0)

@todo

...@todo

@see Thread::Mutex#synchronize...

Etc::SC_SYNCHRONIZED_IO -> Integer (3115.0)

Etc.#sysconf の引数に指定します。

Etc.#sysconf の引数に指定します。

詳細は sysconf(3) を参照してください。

Thread::ConditionVariable (3054.0)

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

...クラスです。

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

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

=== Condition Variable とは

あるスレッド A が排他領域で動いていたとします。スレッド A は現在空いてい...
...cv = ConditionVariable.new

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

b = Thread.start {
mutex.synchronize {
# 上の条件を満た...
...

require 'thread'

class TinyQueue
def initialize(max=2)
@max = max
@full = ConditionVariable.new
@empty = ConditionVariable.new
@mutex = Mutex.new
@q = []
end

def count
@q.size
end

def enq(v)
@mutex.synchronize{
@full.w...

絞り込み条件を変える

Thread::ConditionVariable#broadcast -> self (3040.0)

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

...れた
スレッドは Thread::ConditionVariable#wait
で指定した mutex のロックを試みます。

@return 常に self を返します。

//emlist[例][ruby]{
mutex = Mutex.new
cv = ConditionVariable.new
flg = true

3.times {
Thread
.start {
mutex.synchronize {
puts "a1"
w...
...hile (flg)
cv.wait(mutex)
end
puts "a2"
}
}
}

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

sleep 1

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

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

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

...れた
スレッドは Thread::ConditionVariable#wait
で指定した mutex のロックを試みます。

@return 常に self を返します。

//emlist[例][ruby]{
mutex = Mutex.new
cv = ConditionVariable.new
flg = true

3.times {
Thread
.start {
mutex.synchronize {
puts "a1"
w...
...hile (flg)
cv.wait(mutex)
end
puts "a2"
}
}
}

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

sleep 1

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

Thread::Mutex (3006.0)

Mutex(Mutal Exclusion = 相互排他ロック)は共有データを並行アクセスから保護する ためにあります。Mutex の典型的な使い方は(m を Mutex オブジェクトとします):

...的な使い方は(m を Mutex オブジェクトとします):

m.lock
begin
# m によって保護されたクリティカルセクション
ensure
m.unlock
end

または、より簡単に

m.synchronize {
# m によって保護されたクリティカルセクション
}...

NEWS for Ruby 2.0.0 (144.0)

NEWS for Ruby 2.0.0 このドキュメントは前回リリース以降のバグ修正を除くユーザーに影響のある機能の変更のリストです。

...します
* 非互換:
* Mutex#lock, Mutex#unlock, Mutex#try_lock, Mutex#synchronize, Mutex#sleep
はトラップハンドラの中では使えなくなりました。そのようなときは ThreadError が発生します
* Mutex#sleep may spurious wakeup. Check after wakeu...
...加(起動時にチェックします):
* RUBY_THREAD_VM_STACK_SIZE: vm stack size used at thread creation.
default: 128KB (32bit CPU) or 256KB (64bit CPU).
* RUBY_THREAD_MACHINE_STACK_SIZE: machine stack size used at thread
creation. default: 512KB or 1024KB.
* RUB...
...

* Thread
* 追加: Thread#thread_variable_get スレッドローカルな変数を取得します
(these are different than Fiber local variables).
* 追加: Thread#thread_variable_set スレッドローカルな変数をセットします
* 追加: Thread#thread_variables...

Monitor (48.0)

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

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

# consumer
Thread
.start do
loop do
mon.synchronize 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
//...
...'monitor'
mon = Monitor.new
mon.synchronize {
mon.synchronize {
}
}
//}

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

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

絞り込み条件を変える

Mutex_m (28.0)

スレッド同期機構である Thread::Mutex のモジュール版です。クラスに Module#include することでそのクラスに Mutex 機能を持たせることができます。 また、普通のオブジェクトを Object#extend により Mutex にする事ができます。

...スレッド同期機構である Thread::Mutex のモジュール版です。クラスに
Module#include することでそのクラスに Mutex 機能を持たせることができます。
また、普通のオブジェクトを Object#extend により Mutex にする事ができます。

この...
...tex_m#synchronize,
Mutex_m#locked?, Mutex_m#try_lock, Mutex_m#unlock)
はモジュールにincludeした場合には定義されません。

1991

=== 例
クラスに Module#include する例
require "mutex_m"
class Foo
include Mutex_m
...
end
obj = Foo.new
obj.synchronize do...
<< 1 2 > >>