キーワード
- BlockCaller (1)
- EDEADLOCK (1)
- EWOULDBLOCK (1)
- HTTPLocked (1)
- HTTPRequest (1)
- LockCommand (1)
- LockModeFailer (1)
- Monitor (1)
- Mutex (1)
- Thread (1)
- UnknownLocker (1)
- Unlock (1)
検索結果
先頭5件
-
Net
:: HTTP :: Lock (54052.0) -
HTTP の LOCK リクエストを表すクラスです。
HTTP の LOCK リクエストを表すクラスです。 -
Errno
:: EDEADLOCK (18004.0) -
システムコールのエラーコードを表す例外クラスです。詳細は Errno::EXXX を参照してください。
システムコールのエラーコードを表す例外クラスです。詳細は Errno::EXXX を参照してください。 -
Errno
:: EWOULDBLOCK (18004.0) -
システムコールのエラーコードを表す例外クラスです。詳細は Errno::EXXX を参照してください。
システムコールのエラーコードを表す例外クラスです。詳細は Errno::EXXX を参照してください。 -
Fiddle
:: Closure :: BlockCaller (18004.0) -
Ruby のブロックをラップしたコールバック関数を表すクラスです。
Ruby のブロックをラップしたコールバック関数を表すクラスです。
Ruby のブロックを C の関数ポインタとして表現するためのクラスです。
require 'fiddle'
include Fiddle
libc = Fiddle.dlopen("/lib/libc.so.6")
qs = Fiddle::Function.new(libc["qsort"],
[TYPE_VOIDP, TYPE_INT, TYPE_INT, TYPE_VOIDP],
TYP... -
Gem
:: Commands :: LockCommand (18004.0) -
指定された特定のバージョンの Gem パッケージに依存する Gem を使用するために 必要な Kernel#gem メソッドの呼び出し方法を文字列で出力します。
指定された特定のバージョンの Gem パッケージに依存する Gem を使用するために
必要な Kernel#gem メソッドの呼び出し方法を文字列で出力します。 -
Net
:: HTTP :: Unlock (18004.0) -
HTTP の UNLOCK リクエストを表すクラスです。
HTTP の UNLOCK リクエストを表すクラスです。 -
Net
:: HTTPLocked (18004.0) -
HTTP レスポンス 423 (Locked) を表現するクラスです。
HTTP レスポンス 423 (Locked) を表現するクラスです。
詳しくは 4918 を見てください。 -
Sync
_ m :: LockModeFailer (18004.0) -
誤ったロックモードがセットされている場合に発生する例外です。
誤ったロックモードがセットされている場合に発生する例外です。 -
Sync
_ m :: UnknownLocker (18004.0) -
スレッドがロックされているべきタイミングでロックさせない場合に発生する例外です。
スレッドがロックされているべきタイミングでロックさせない場合に発生する例外です。 -
Monitor (52.0)
-
スレッドの同期機構としてのモニター機能を提供するクラスです。 また同じスレッドから何度も lock できる Mutex としての機能も提供します。
スレッドの同期機構としてのモニター機能を提供するクラスです。
また同じスレッドから何度も lock できる Mutex としての機能も提供します。
MonitorMixin を include し、いくつかの別名を定義したクラスです。
=== 例
//emlist[消費者、生産者問題の例][ruby]{
require 'monitor'
buf = []
mon = Monitor.new
empty_cond = mon.new_cond
# consumer
Thread.start do
loop do
mon.synchronize do
empty... -
Net
:: HTTPRequest (22.0) -
HTTP リクエストを抽象化するクラスです。
HTTP リクエストを抽象化するクラスです。
Net::HTTPRequest は抽象クラスなので実際にはサブクラスの
* Net::HTTP::Get
* Net::HTTP::Head
* Net::HTTP::Post
* Net::HTTP::Put
* Net::HTTP::Copy
* Net::HTTP::Delete
* Net::HTTP::Lock
* Net::HTTP::Mkcol
* Net::HTTP::Move
* Net::HTTP::Options
* Net::HTTP::Propfind
* Net::H... -
Thread (22.0)
-
スレッドを表すクラスです。スレッドとはメモリ空間を共有して同時に実行される制御の流れです。 Thread を使うことで並行プログラミングが可能になります。
スレッドを表すクラスです。スレッドとはメモリ空間を共有して同時に実行される制御の流れです。
Thread を使うことで並行プログラミングが可能になります。
=== 実装
ネイティブスレッドを用いて実装されていますが、
現在の実装では Ruby VM は Giant VM lock (GVL) を有しており、同時に実行される
ネイティブスレッドは常にひとつです。
ただし、IO 関連のブロックする可能性があるシステムコールを行う場合には
GVL を解放します。その場合にはスレッドは同時に実行され得ます。
また拡張ライブラリから GVL を操作できるので、複数のスレッドを
同時に実行するような拡... -
Thread
:: Mutex (22.0) -
Mutex(Mutal Exclusion = 相互排他ロック)は共有データを並行アクセスから保護する ためにあります。Mutex の典型的な使い方は(m を Mutex オブジェクトとします):
Mutex(Mutal Exclusion = 相互排他ロック)は共有データを並行アクセスから保護する
ためにあります。Mutex の典型的な使い方は(m を Mutex オブジェクトとします):
m.lock
begin
# m によって保護されたクリティカルセクション
ensure
m.unlock
end
または、より簡単に
m.synchronize {
# m によって保護されたクリティカルセクション
}