るりまサーチ (Ruby 2.2.0)

最速Rubyリファレンスマニュアル検索!
88件ヒット [1-88件を表示] (0.107秒)
トップページ > クエリ:@[x] > バージョン:2.2.0[x] > クエリ:h[x] > クエリ:スレッド[x]

別のキーワード

  1. スレッド
  2. スレッド thread
  3. スレッド spec/rubycmd
  4. スレッド spec/terminate

ライブラリ

モジュール

検索結果

スレッド (54934.0)

スレッド スレッドとはメモリ空間を共有して同時に実行される制御の流れです。 Ruby ではスレッドはThread クラスのインスタンスとして表されます。

スレッド
スレッドとはメモリ空間を共有して同時に実行される制御の流れです。
Ruby ではスレッドはThread クラスのインスタンスとして表されます。


=== 実装
ネイティブスレッドを用いて実装されていますが、
現在の実装では Ruby VM は Giant VM lock (GVL) を有しており、同時に実行される
ネイティブスレッドは常にひとつです。
ただし、IO 関連のブロックする可能性があるシステムコールを行う場合には
GVL を解放します。その場合にはスレッドは同時に実行され得ます。
また拡張ライブラリから GVL を操作できるので、複数のスレッドを
同時に実行するような拡...

Thread#thread_variable_get(key) -> object | nil (27421.0)

引数 key で指定した名前のスレッドローカル変数を返します。

引数 key で指定した名前のスレッドローカル変数を返します。

[注意]: Thread#[] でセットしたローカル変数(Fiber ローカル変数)と
異なり、Fiber を切り替えても同じ変数を返す事に注意してください。

例:

Thread.new {
Thread.current.thread_variable_set("foo", "bar") # スレッドローカル
Thread.current["foo"] = "bar" # Fiber ローカル

Fiber.new {
Fiber.yield ...

Thread#thread_variable?(key) -> bool (27385.0)

引数 key で指定した名前のスレッドローカル変数が存在する場合に true、そ うでない場合に false を返します。

引数 key で指定した名前のスレッドローカル変数が存在する場合に true、そ
うでない場合に false を返します。

@param key 変数名を String か Symbol で指定します。

me = Thread.current
me.thread_variable_set(:oliver, "a")
me.thread_variable?(:oliver) # => true
me.thread_variable?(:stanley) # => false

[注意]: Thread#[] でセットしたローカル変数(Fiber ローカル...

Thread#thread_variable_set(key, value) (27367.0)

引数 key で指定した名前のスレッドローカル変数に引数 value をセットしま す。

引数 key で指定した名前のスレッドローカル変数に引数 value をセットしま
す。

[注意]: Thread#[] でセットしたローカル変数(Fiber ローカル変数)と
異なり、セットした変数は Fiber を切り替えても共通で使える事に注意してく
ださい。

//emlist[例][ruby]{
thr = Thread.new do
Thread.current.thread_variable_set(:cat, 'meow')
Thread.current.thread_variable_set("dog", 'woof')
end
thr.join ...

ThreadsWait::ErrNoWaitingThread (27067.0)

終了を待つスレッドが存在しない時、発生します。

終了を待つスレッドが存在しない時、発生します。

@see ThreadsWait#next_wait

絞り込み条件を変える

Thread (18889.0)

スレッドを表すクラスです。スレッドとはメモリ空間を共有して同時に実行される制御の流れです。 Thread を使うことで並行プログラミングが可能になります。

スレッドを表すクラスです。スレッドとはメモリ空間を共有して同時に実行される制御の流れです。
Thread を使うことで並行プログラミングが可能になります。


=== 実装
ネイティブスレッドを用いて実装されていますが、
現在の実装では Ruby VM は Giant VM lock (GVL) を有しており、同時に実行される
ネイティブスレッドは常にひとつです。
ただし、IO 関連のブロックする可能性があるシステムコールを行う場合には
GVL を解放します。その場合にはスレッドは同時に実行され得ます。
また拡張ライブラリから GVL を操作できるので、複数のスレッドを
同時に実行するような拡...

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

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

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

「割り込み」とは、非同期イベントや Thread#raise や
Thread#kill、Signal.#trap(未サポート)、メインスレッドの終了
(メインスレッドが終了すると、他のスレッドも終了されます)を意味します。

@param hash 例外クラスがキー、割り込みのタイミングを指定する
Symbol が値の Hash を指定します。
値の内容は以下のいずれかです。

: :immediate

すぐに割り込みます。

: :on_block...

Net::IMAP#thread(algorithm, search_keys, charset) -> [Net::IMAP::ThreadMember] (18739.0)

THREADコマンドを送り、メールボックスを検索した結果を スレッド形式の木構造で返します。

THREADコマンドを送り、メールボックスを検索した結果を
スレッド形式の木構造で返します。

THREAD コマンドは 5256 で定義されています。
詳しくはそちらを参照してください。
このコマンドは Net::IMAP#capability の返り値を見ることで
利用可能かどうか判断できます。

algorithm は木構造を決定するためのアルゴリズムを指定します。
以下の2つが利用可能です。
* "ORDEREDSUBJECT" subjectを使って平坦に区切るだけ
* "REFERENCES" どのメッセージに返事をしているかを見て木構造を作る
詳しくは 5256 を見てく...

Net::IMAP#uid_thread(algorithm, search_keys, charset) -> [Net::IMAP::ThreadMember] (18739.0)

THREADコマンドを送り、メールボックスを検索した結果を スレッド形式の木構造で返します。

THREADコマンドを送り、メールボックスを検索した結果を
スレッド形式の木構造で返します。

ほぼ Net::IMAP#thread と同じですが、返ってくるオブジェクトの
Net::IMAP::ThreadMember#seqno の内容が message sequence number
ではなく UID となります。

@param algorithm スレッド構造構築アルゴリズム名(文字列)
@param search_key 検索条件(文字列配列)
@param charset 検索条件の解釈に用いるCHARSET名(文字列)
@see Net::IMAP::ThreadMember...

Net::IMAP#add_response_handler(handler) -> () (18673.0)

レスポンスハンドラを追加します。

レスポンスハンドラを追加します。

レスポンスハンドラはサーバから応答を受け取るごとに
呼びだされます。ハンドラには
Net::IMAP::TaggedResponse もしくは
Net::IMAP::UntaggedResponse オブジェクトが
渡されます。

主にサーバからの非同期的なイベントを受け取るため
に用います。例えば EXISTS 応答を受け取る
(メールボックスに新たなメールが追加されたタイミングで発生します)
ためなどに用いられます。

レスポンスハンドラはメインのスレッドとは別のスレッドで
呼びだされることに注意してください。

例:

imap.add_respo...

絞り込み条件を変える

Net::IMAP#add_response_handler(handler) {|resp| ...} -> () (18673.0)

レスポンスハンドラを追加します。

レスポンスハンドラを追加します。

レスポンスハンドラはサーバから応答を受け取るごとに
呼びだされます。ハンドラには
Net::IMAP::TaggedResponse もしくは
Net::IMAP::UntaggedResponse オブジェクトが
渡されます。

主にサーバからの非同期的なイベントを受け取るため
に用います。例えば EXISTS 応答を受け取る
(メールボックスに新たなメールが追加されたタイミングで発生します)
ためなどに用いられます。

レスポンスハンドラはメインのスレッドとは別のスレッドで
呼びだされることに注意してください。

例:

imap.add_respo...

DRb.#thread -> Thread|nil (18667.0)

プライマリサーバが動作しているスレッドを返します。

プライマリサーバが動作しているスレッドを返します。

プライマリサーバが存在しない場合は nil を返します。

@see DRb.#primary_server

IRB::Context#thread -> Thread (18667.0)

現在のスレッドを返します。

現在のスレッドを返します。

@see Thread.current

Process.#detach(pid) -> Thread (18451.0)

子プロセス pid の終了を監視するスレッドを生成して返します。 生成したスレッドは子プロセスが終了した後に終了ステータス (Process::Status) を返します。 指定した子プロセスが存在しなければ即座に nil で終了します。

子プロセス pid の終了を監視するスレッドを生成して返します。
生成したスレッドは子プロセスが終了した後に終了ステータス (Process::Status) を返します。
指定した子プロセスが存在しなければ即座に nil で終了します。

@param pid 子スレッドのプロセス ID を整数で指定します。

@raise NotImplementedError メソッドが現在のプラットフォームで実装されていない場合に発生します。

pid = fork {
# child
sleep 3
}

p pid # => 7762
th...

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

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

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

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

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

絞り込み条件を変える

Kernel.#throw(tag, value = nil) -> () (18391.0)

Kernel.#catchとの組み合わせで大域脱出を行います。 throw は同じ tag を指定した catch のブロックの終わりまでジャンプします。

Kernel.#catchとの組み合わせで大域脱出を行います。 throw
は同じ tag を指定した catch のブロックの終わりまでジャンプします。

throw は探索時に呼び出しスタックをさかのぼるので、
ジャンプ先は同じメソッド内にあるとは限りません。
もし ensure節 が存在するならジャンプ前に実行します。

同じ tag で待っている catch が存在しない場合は、例外で
スレッドが終了します。

同じ tag であるとは Object#object_id が同じであるという意味です。

@param tag catch の引数に対応する任意のオブジェクトです。
@pa...

Thread::SizedQueue#shift(non_block = false) -> object (18385.0)

キューからひとつ値を取り出します。 キューに push しようと待っているスレッドがあれば、実行を再開させます。

キューからひとつ値を取り出します。
キューに push しようと待っているスレッドがあれば、実行を再開させます。

@param non_block true を与えると、キューが空の時に例外 ThreadError が発生します。

//emlist[例][ruby]{
require 'thread'

q = SizedQueue.new(4)

th1 = Thread.start do
while resource = q.pop
puts resource
end
end

[:resource1, :resource2, :resource3, nil].eac...

Tracer.display_thread_id=(flag) (18385.0)

スレッド ID を表示するかどうかを設定します。

スレッド ID を表示するかどうかを設定します。

@param flag スレッド ID を表示するならば、真を指定します。

Thread::SizedQueue#push(obj, non_block = false) -> () (18373.0)

キューに与えられたオブジェクトを追加します。

キューに与えられたオブジェクトを追加します。

キューのサイズが Thread::SizedQueue#max に達している場合は、
non_block が真でなければ、キューのサイズが Thread::SizedQueue#max
より小さくなるまで他のスレッドに実行を譲ります。
その後、キューに与えられたオブジェクトを追加します。

@param obj キューに追加したいオブジェクトを指定します。
@param non_block true を与えると、キューが一杯の時に例外 ThreadError が発生します。

@see Thread::Queue#push

Thread::Queue#shift(non_block = false) -> object (18367.0)

キューからひとつ値を取り出します。キューが空の時、呼出元のスレッドは停止します。

キューからひとつ値を取り出します。キューが空の時、呼出元のスレッドは停止します。

@param non_block true を与えると、キューが空の時に例外 ThreadError が発生します。

//emlist[例][ruby]{
require 'thread'

q = Queue.new

th1 = Thread.start do
while resource = q.pop
puts resource
end
end

[:resource1, :resource2, :resource3, nil].each { |r|
q.push(r)
}

t...

絞り込み条件を変える

void rb_thread_schedule(void) (18367.0)

他のスレッドに実行権を渡します。 対象の特定はできません。

他のスレッドに実行権を渡します。
対象の特定はできません。

@see rb_thread_wait_fd, rb_thread_wait_for

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

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

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

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

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

//emlist[例][ruby]{
m = Mutex.new
result = m.synchronize do
m.locked? # =>...

ThreadsWait.all_waits(*threads) {|thread| ...} -> () (9733.0)

指定されたスレッドすべてが終了するまで待ちます。 ブロックが与えられた場合、スレッド終了時にブロックを評価します。

指定されたスレッドすべてが終了するまで待ちます。
ブロックが与えられた場合、スレッド終了時にブロックを評価します。

@param threads 終了するまでまつスレッドを一つもしくは複数指定します。

require 'thwait'

threads = []
5.times {|i|
threads << Thread.new { sleep 1; p Thread.current }
}
ThreadsWait.all_waits(*threads) {|th| printf("end %s\n", th.inspect) }

# 出力例
#=...

ThreadsWait.new(*threads) -> ThreadsWait (9733.0)

指定されたスレッドの終了をまつための、スレッド同期オブジェクトをつくります。

指定されたスレッドの終了をまつための、スレッド同期オブジェクトをつくります。

@param threads 終了を待つスレッドを一つもしくは複数指定します。

使用例
require 'thwait'

threads = []
5.times {|i|
threads << Thread.new { sleep 1; p Thread.current }
}

thall = ThreadsWait.new(*threads)
thall.all_waits{|th|
printf("end %s\n", th.inspect)
}

...

Thread.kill(thread) -> Thread (9715.0)

指定したスレッド thread に対して Thread#exit を呼びます。終了したスレッドを返します。

指定したスレッド thread に対して Thread#exit を呼びます。終了したスレッドを返します。

@param thread 終了したい Thread オブジェクトを指定します。

th = Thread.new do
end

p Thread.kill(th) #=> #<Thread:0x40221bc8 dead>

絞り込み条件を変える

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

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

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

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

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

@raise ThreadError 現在のスレッドが属する ThreadGroup が freeze されている場合に発生します。またブロックを与えられずに呼ばれた場合にも発生します。


注意:

例えば、以下のコー...

Thread.new(*arg) {|*arg| ... } -> Thread (9505.0)

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

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

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

@raise ThreadError 現在のスレッドが属する ThreadGroup が freeze されている場合に発生します。またブロックを与えられずに呼ばれた場合にも発生します。

注意:

例えば、以下のコードは間違いです。スレッドの実行が開始される前に
変数 i が書き変わる可能性があるからです。

for i in 1....

Thread.start(*arg) {|*arg| ... } -> Thread (9505.0)

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

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

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

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

@raise ThreadError 現在のスレッドが属する ThreadGroup が freeze されている場合に発生します。またブロックを与えられずに呼ばれた場合にも発生します。


注意:

例えば、以下のコー...

Thread::ConditionVariable (9481.0)

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

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

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

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

=== Condition Variable とは

あるスレッド A が排他領域で動いていたとします。スレッド A は現在空いていない
リソースが必要になったので空くまで待つことにしたとします。これはうまくいきません。
なぜなら、スレッド A は排他領域で動いているわけですから、他のスレッドは動くことが
できません。リ...

ThreadsWait#join(*threads) -> () (9451.0)

終了を待つスレッドの対象として、threads で指定されたスレッドを指定します。

終了を待つスレッドの対象として、threads で指定されたスレッドを指定します。

@param threads 複数スレッドの終了を待つスレッドに指定されたthreadsを加えます。

require 'thwait'

threads = []
5.times {|i|
threads << Thread.new { sleep 1; p Thread.current }
}

thall = ThreadsWait.new
p thall.threads #=> []
thall.join(*threads)
p thall.threads
...

絞り込み条件を変える

ThreadsWait#join_nowait(*threads) -> () (9451.0)

終了を待つスレッドの対象として、threads で指定されたスレッドを指定します。 しかし、実際には終了をまちません。

終了を待つスレッドの対象として、threads で指定されたスレッドを指定します。
しかし、実際には終了をまちません。

@param threads 複数スレッドの終了を待つスレッドに指定されたthreadsを加えます。

require 'thwait'

threads = []
5.times {|i|
threads << Thread.new { sleep 1; p Thread.current }
}

thall = ThreadsWait.new
p thall.threads #=> []
thall.join_nowait(*thr...

Thread#backtrace_locations(range) -> [Thread::Backtrace::Location] | nil (9439.0)

スレッドの現在のバックトレースを Thread::Backtrace::Location の配 列で返します。

スレッドの現在のバックトレースを Thread::Backtrace::Location の配
列で返します。

引数で指定した値が範囲外の場合、スレッドがすでに終了している場合は nil
を返します。

@param start 開始フレームの位置を数値で指定します。

@param length 取得するフレームの個数を指定します。

@param range 取得したいフレームの範囲を示す Range オブジェクトを指定します。

Kernel.#caller_locations と似ていますが、本メソッドは self に限定
した情報を返します。

//emlist[例][ruby]...

Thread#backtrace_locations(start = 0, length = nil) -> [Thread::Backtrace::Location] | nil (9439.0)

スレッドの現在のバックトレースを Thread::Backtrace::Location の配 列で返します。

スレッドの現在のバックトレースを Thread::Backtrace::Location の配
列で返します。

引数で指定した値が範囲外の場合、スレッドがすでに終了している場合は nil
を返します。

@param start 開始フレームの位置を数値で指定します。

@param length 取得するフレームの個数を指定します。

@param range 取得したいフレームの範囲を示す Range オブジェクトを指定します。

Kernel.#caller_locations と似ていますが、本メソッドは self に限定
した情報を返します。

//emlist[例][ruby]...

ThreadsWait#next_wait(nonblock = nil) -> Thread (9439.0)

指定したスレッドのどれかが終了するまで待ちます。

指定したスレッドのどれかが終了するまで待ちます。

@param nonblock true を与えると、キューが空の時、例外 ThreadsWait::ErrNoFinishedThread が発生します。

@raise ErrNoWaitingThread 終了をまつスレッドが存在しない時、発生します。

@raise ErrNoFinishedThread nonblock がtrue でかつ、キューが空の時、発生します。

#使用例
require 'thwait'

threads = []
2.times {|i|
threads << Thread.n...

ThreadsWait.all_waits(*threads) -> () (9433.0)

指定されたスレッドすべてが終了するまで待ちます。 ブロックが与えられた場合、スレッド終了時にブロックを評価します。

指定されたスレッドすべてが終了するまで待ちます。
ブロックが与えられた場合、スレッド終了時にブロックを評価します。

@param threads 終了するまでまつスレッドを一つもしくは複数指定します。

require 'thwait'

threads = []
5.times {|i|
threads << Thread.new { sleep 1; p Thread.current }
}
ThreadsWait.all_waits(*threads) {|th| printf("end %s\n", th.inspect) }

# 出力例
#=...

絞り込み条件を変える

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

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

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

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

@raise ThreadError 自身が freeze されているか enclose されている場合に、発生します。また引数 thread が属する ThreadGroup が freeze されているか enclose されている場合にも発生します。

//emlist[例][ruby]{
puts "Initial group is #{ThreadGroup::Default.list}"
# => Initial group is [#<Thread...

Thread#priority -> Integer (9229.0)

スレッドの優先度を返します。この値が大きいほど優先度が高くなります。 メインスレッドのデフォルト値は 0 です。新しく生成されたスレッドは親スレッドの priority を引き継ぎます。

スレッドの優先度を返します。この値が大きいほど優先度が高くなります。
メインスレッドのデフォルト値は 0 です。新しく生成されたスレッドは親スレッドの
priority を引き継ぎます。

@param val スレッドの優先度を指定します。プラットフォームに依存します。

//emlist[例][ruby]{
Thread.current.priority # => 0

count1 = count2 = 0
a = Thread.new do
loop { count1 += 1 }
end
a.priority = -1

b = Thread.new do
...

Thread#priority=(val) (9229.0)

スレッドの優先度を返します。この値が大きいほど優先度が高くなります。 メインスレッドのデフォルト値は 0 です。新しく生成されたスレッドは親スレッドの priority を引き継ぎます。

スレッドの優先度を返します。この値が大きいほど優先度が高くなります。
メインスレッドのデフォルト値は 0 です。新しく生成されたスレッドは親スレッドの
priority を引き継ぎます。

@param val スレッドの優先度を指定します。プラットフォームに依存します。

//emlist[例][ruby]{
Thread.current.priority # => 0

count1 = count2 = 0
a = Thread.new do
loop { count1 += 1 }
end
a.priority = -1

b = Thread.new do
...

Thread.abort_on_exception -> bool (9181.0)

真の時は、いずれかのスレッドが例外によって終了した時に、インタプリタ 全体を中断させます。false の場合、あるスレッドで起こった例外は、Thread#join などで検出されない限りそのスレッドだけをなにも警告を出さずに終了させます。

真の時は、いずれかのスレッドが例外によって終了した時に、インタプリタ
全体を中断させます。false の場合、あるスレッドで起こった例外は、Thread#join
などで検出されない限りそのスレッドだけをなにも警告を出さずに終了させます。

デフォルトは false です。

c:Thread#exceptionを参照してください。

@param newstate スレッド実行中に例外発生した場合、インタプリタ全体を終了させるかどうかを true か false で指定します。

//emlist[例][ruby]{
Thread.abort_on_exception # => false...

Thread.abort_on_exception=(newstate) (9181.0)

真の時は、いずれかのスレッドが例外によって終了した時に、インタプリタ 全体を中断させます。false の場合、あるスレッドで起こった例外は、Thread#join などで検出されない限りそのスレッドだけをなにも警告を出さずに終了させます。

真の時は、いずれかのスレッドが例外によって終了した時に、インタプリタ
全体を中断させます。false の場合、あるスレッドで起こった例外は、Thread#join
などで検出されない限りそのスレッドだけをなにも警告を出さずに終了させます。

デフォルトは false です。

c:Thread#exceptionを参照してください。

@param newstate スレッド実行中に例外発生した場合、インタプリタ全体を終了させるかどうかを true か false で指定します。

//emlist[例][ruby]{
Thread.abort_on_exception # => false...

絞り込み条件を変える

Thread#join -> self (9169.0)

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

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

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

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

@raise ThreadError join を実行することによってデッドロックが起きる場合に発生します。またカレントスレッドを join したときにも発生します。

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

threads = ...

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

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

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

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

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

@raise ThreadError join を実行することによってデッドロックが起きる場合に発生します。またカレントスレッドを join したときにも発生します。

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

threads = ...

Thread#status -> String | false | nil (9163.0)

生きているスレッドの状態を文字列 "run"、"sleep", "aborting" のいず れかで返します。正常終了したスレッドに対して false、例外によ り終了したスレッドに対して nil を返します。

生きているスレッドの状態を文字列 "run"、"sleep", "aborting" のいず
れかで返します。正常終了したスレッドに対して false、例外によ
り終了したスレッドに対して nil を返します。

Thread#alive? が真を返すなら、このメソッドも真です。

例:
a = Thread.new { raise("die now") }
b = Thread.new { Thread.stop }
c = Thread.new { Thread.exit }
d = Thread.new { sleep }
d.kill ...

Thread#[]=(name,val) (9157.0)

val を name に対応するスレッド固有のデータとして格納します。

val を name に対応するスレッド固有のデータとして格納します。

@param name スレッド固有データのキーを文字列か Symbol で指定します。文字列を指定した場合は String#to_sym によりシンボルに変換されます。

@param val スレッド固有データを指定します。nil を指定するとそのスレッド固有データは削除されます。


@see Thread#[]

Thread#[](name) -> object | nil (9151.0)

name に対応したスレッドに固有のデータを取り出します。 name に対応するスレッド固有データがなければ nil を返し ます。

name に対応したスレッドに固有のデータを取り出します。
name に対応するスレッド固有データがなければ nil を返し
ます。

@param name スレッド固有データのキーを文字列か Symbol で指定します。

//emlist[例][ruby]{
[
Thread.new { Thread.current["name"] = "A" },
Thread.new { Thread.current[:name] = "B" },
Thread.new { Thread.current["name"] = "C" }
].each do |th|
th.join...

絞り込み条件を変える

Thread#run -> self (9151.0)

停止状態(stop)のスレッドを再開させます。 Thread#wakeup と異なりすぐにスレッドの切り替え を行います。

停止状態(stop)のスレッドを再開させます。
Thread#wakeup と異なりすぐにスレッドの切り替え
を行います。

@raise ThreadError 死んでいるスレッドに対して実行すると発生します。

//emlist[例][ruby]{
a = Thread.new { puts "a"; Thread.stop; puts "c" }
sleep 0.1 while a.status!='sleep'
puts "Got here"
a.run
a.join
# => a
# => Got here
# => c
//}

@see Thread#wakeup, Threa...

Thread#exit -> self (9139.0)

スレッドの実行を終了させます。終了時に ensure 節が実行されます。

スレッドの実行を終了させます。終了時に ensure 節が実行されます。

ただし、スレッドは終了処理中(aborting)にはなりますが、
直ちに終了するとは限りません。すでに終了している場合は何もしません。このメソッドにより
終了したスレッドの Thread#value の返り値は不定です。
自身がメインスレッドであるか最後のスレッドである場合は、プロセスを Kernel.#exit(0)
により終了します。

Kernel.#exit と違い例外 SystemExit を発生しません。

th1 = Thread.new do
begin
sleep 10
...

Thread#kill -> self (9139.0)

スレッドの実行を終了させます。終了時に ensure 節が実行されます。

スレッドの実行を終了させます。終了時に ensure 節が実行されます。

ただし、スレッドは終了処理中(aborting)にはなりますが、
直ちに終了するとは限りません。すでに終了している場合は何もしません。このメソッドにより
終了したスレッドの Thread#value の返り値は不定です。
自身がメインスレッドであるか最後のスレッドである場合は、プロセスを Kernel.#exit(0)
により終了します。

Kernel.#exit と違い例外 SystemExit を発生しません。

th1 = Thread.new do
begin
sleep 10
...

Thread#terminate -> self (9139.0)

スレッドの実行を終了させます。終了時に ensure 節が実行されます。

スレッドの実行を終了させます。終了時に ensure 節が実行されます。

ただし、スレッドは終了処理中(aborting)にはなりますが、
直ちに終了するとは限りません。すでに終了している場合は何もしません。このメソッドにより
終了したスレッドの Thread#value の返り値は不定です。
自身がメインスレッドであるか最後のスレッドである場合は、プロセスを Kernel.#exit(0)
により終了します。

Kernel.#exit と違い例外 SystemExit を発生しません。

th1 = Thread.new do
begin
sleep 10
...

Thread#abort_on_exception -> bool (9115.0)

真の場合、そのスレッドが例外によって終了した時に、インタプリタ 全体を中断させます。false の場合、あるスレッドで起こった例 外は、Thread#join などで検出されない限りそのスレッ ドだけをなにも警告を出さずに終了させます。

真の場合、そのスレッドが例外によって終了した時に、インタプリタ
全体を中断させます。false の場合、あるスレッドで起こった例
外は、Thread#join などで検出されない限りそのスレッ
ドだけをなにも警告を出さずに終了させます。

デフォルトは偽です。c:Thread#exceptionを参照してください。

@param newstate 自身を実行中に例外発生した場合、インタプリタ全体を終了させるかどうかを true か false で指定します。

//emlist[例][ruby]{
thread = Thread.new { sleep 1 }
thread.abort_o...

絞り込み条件を変える

Thread#abort_on_exception=(newstate) (9115.0)

真の場合、そのスレッドが例外によって終了した時に、インタプリタ 全体を中断させます。false の場合、あるスレッドで起こった例 外は、Thread#join などで検出されない限りそのスレッ ドだけをなにも警告を出さずに終了させます。

真の場合、そのスレッドが例外によって終了した時に、インタプリタ
全体を中断させます。false の場合、あるスレッドで起こった例
外は、Thread#join などで検出されない限りそのスレッ
ドだけをなにも警告を出さずに終了させます。

デフォルトは偽です。c:Thread#exceptionを参照してください。

@param newstate 自身を実行中に例外発生した場合、インタプリタ全体を終了させるかどうかを true か false で指定します。

//emlist[例][ruby]{
thread = Thread.new { sleep 1 }
thread.abort_o...

Thread.stop -> nil (9115.0)

他のスレッドから Thread#run メソッドで再起動されるまで、カレ ントスレッドの実行を停止します。

他のスレッドから Thread#run メソッドで再起動されるまで、カレ
ントスレッドの実行を停止します。

//emlist[例][ruby]{
a = Thread.new { print "a"; Thread.stop; print "c" }
sleep 0.1 while a.status!='sleep'
print "b"
a.run
a.join
# => "abc"
//}

@see Thread#run, Thread#wakeup

Thread::ConditionVariable#broadcast -> self (9115.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"
while (flg)
cv.wait(mutex)
...

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

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

状態変数を待っているスレッドを1つ再開します。再開された
スレッドは Thread::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(mutex)
...

Thread#raise(error_type, message, traceback) -> () (9103.0)

自身が表すスレッドで強制的に例外を発生させます。

自身が表すスレッドで強制的に例外を発生させます。

@param error_type Kernel.#raise を参照してください。

@param message Kernel.#raise を参照してください。

@param traceback Kernel.#raise を参照してください。

Thread.new {
sleep 1
Thread.main.raise "foobar"
}

begin
sleep
rescue
p $!, $@
end

=> #<RuntimeError: foobar>
[...

絞り込み条件を変える

Thread#wakeup -> self (9103.0)

停止状態(stop)のスレッドを実行可能状態(run)にします。

停止状態(stop)のスレッドを実行可能状態(run)にします。

@raise ThreadError 死んでいるスレッドに対して実行すると発生します。

//emlist[例][ruby]{
c = Thread.new { Thread.stop; puts "hey!" }
sleep 0.1 while c.status!='sleep'
c.wakeup
c.join
# => "hey!"
//}

@see Thread#run, Thread.stop

Thread.DEBUG -> Integer (9103.0)

スレッドのデバッグレベルを返します。

スレッドのデバッグレベルを返します。

スレッドのデバッグレベルが 0 のときはなにもしません。
それ以外の場合は、スレッドのデバッグログを標準出力に出力します。
初期値は 0 です。
使用するためには、THREAD_DEBUG を -1 にして Ruby をコンパイルする必要が
あります。

//emlist[例][ruby]{
Thread.DEBUG # => 0
//}

@see Thread.DEBUG=

Thread::ConditionVariable#wait(mutex, timeout = nil) -> self (9103.0)

mutex のロックを解放し、カレントスレッドを停止します。 Thread::ConditionVariable#signalまたは、 Thread::ConditionVariable#broadcastで送られたシグナルを 受け取ると、mutexのロックを取得し、実行状態となります。

mutex のロックを解放し、カレントスレッドを停止します。
Thread::ConditionVariable#signalまたは、
Thread::ConditionVariable#broadcastで送られたシグナルを
受け取ると、mutexのロックを取得し、実行状態となります。

@param mutex Thread::Mutex オブジェクトを指定します。

@param timeout スリープする秒数を指定します。この場合はシグナルを受け取
らなかった場合でも指定した秒数が経過するとスリープを終了
します。省略する...

Thread#add_trace_func(pr) -> Proc (9085.0)

スレッドにトレース用ハンドラを追加します。

スレッドにトレース用ハンドラを追加します。

追加したハンドラを返します。

@param pr トレースハンドラ(Proc オブジェクト)

//emlist[例][ruby]{
th = Thread.new do
class Trace
end
43.to_s
end
th.add_trace_func lambda {|*arg| p arg }
th.join

# => ["line", "example.rb", 4, nil, #<Binding:0x00007f98e107d0d8>, nil]
# => ["c-call", "example.rb", 4, ...

Thread#set_trace_func(pr) -> Proc | nil (9085.0)

スレッドにトレース用ハンドラを設定します。

スレッドにトレース用ハンドラを設定します。

nil を渡すとトレースを解除します。

設定したハンドラを返します。

//emlist[例][ruby]{
th = Thread.new do
class Trace
end
2.to_s
Thread.current.set_trace_func nil
3.to_s
end
th.set_trace_func lambda {|*arg| p arg }
th.join

# => ["line", "example.rb", 2, nil, #<Binding:0x00007fc8de87cb08>, nil]
#...

絞り込み条件を変える

Thread::SizedQueue#deq(non_block = false) -> object (9085.0)

キューからひとつ値を取り出します。 キューに push しようと待っているスレッドがあれば、実行を再開させます。

キューからひとつ値を取り出します。
キューに push しようと待っているスレッドがあれば、実行を再開させます。

@param non_block true を与えると、キューが空の時に例外 ThreadError が発生します。

//emlist[例][ruby]{
require 'thread'

q = SizedQueue.new(4)

th1 = Thread.start do
while resource = q.pop
puts resource
end
end

[:resource1, :resource2, :resource3, nil].eac...

Thread::SizedQueue#pop(non_block = false) -> object (9085.0)

キューからひとつ値を取り出します。 キューに push しようと待っているスレッドがあれば、実行を再開させます。

キューからひとつ値を取り出します。
キューに push しようと待っているスレッドがあれば、実行を再開させます。

@param non_block true を与えると、キューが空の時に例外 ThreadError が発生します。

//emlist[例][ruby]{
require 'thread'

q = SizedQueue.new(4)

th1 = Thread.start do
while resource = q.pop
puts resource
end
end

[:resource1, :resource2, :resource3, nil].eac...

Thread.pending_interrupt?(error = nil) -> bool (9073.0)

非同期割り込みのキューが空かどうかを返します。

非同期割り込みのキューが空かどうかを返します。

Thread.handle_interrupt は非同期割り込みの発生を延期させるのに使
用しますが、本メソッドは任意の非同期割り込みが存在するかどうかを確認す
るのに使用します。

本メソッドが true を返した場合、Thread.handle_interrupt で例外の
発生を延期するブロックを終了すると延期させられていた例外を発生させるこ
とができます。

@param error 対象の例外クラスを指定します。省略した場合は全ての例外を対
象に確認を行います。

例: 延期させられていた例外をただちに発生...

Thread::SizedQueue#<<(obj) -> () (9073.0)

キューに与えられたオブジェクトを追加します。

キューに与えられたオブジェクトを追加します。

キューのサイズが Thread::SizedQueue#max に達している場合は、
non_block が真でなければ、キューのサイズが Thread::SizedQueue#max
より小さくなるまで他のスレッドに実行を譲ります。
その後、キューに与えられたオブジェクトを追加します。

@param obj キューに追加したいオブジェクトを指定します。
@param non_block true を与えると、キューが一杯の時に例外 ThreadError が発生します。

@see Thread::Queue#push

Thread::SizedQueue#enq(obj, non_block = false) -> () (9073.0)

キューに与えられたオブジェクトを追加します。

キューに与えられたオブジェクトを追加します。

キューのサイズが Thread::SizedQueue#max に達している場合は、
non_block が真でなければ、キューのサイズが Thread::SizedQueue#max
より小さくなるまで他のスレッドに実行を譲ります。
その後、キューに与えられたオブジェクトを追加します。

@param obj キューに追加したいオブジェクトを指定します。
@param non_block true を与えると、キューが一杯の時に例外 ThreadError が発生します。

@see Thread::Queue#push

絞り込み条件を変える

Thread#alive? -> bool (9067.0)

スレッドが「生きている」時、true を返します。

スレッドが「生きている」時、true を返します。

例:
thr = Thread.new { }
thr.join # => #<Thread:0x401b3fb0 dead>
Thread.current.alive? # => true
thr.alive? # => false

Thread#status が真を返すなら、このメソッドも真です。

@see Thread#status, Thread#stop?

Thread#key?(name) -> bool (9067.0)

name に対応したスレッドに固有のデータが定義されていれば true を返します。

name に対応したスレッドに固有のデータが定義されていれば
true を返します。

@param name 文字列か Symbol で指定します。

//emlist[例][ruby]{
me = Thread.current
me[:oliver] = "a"
me.key?(:oliver) # => true
me.key?(:stanley) # => false
//}

Thread#stop? -> bool (9067.0)

スレッドが終了(dead)あるいは停止(stop)している時、true を返します。

スレッドが終了(dead)あるいは停止(stop)している時、true を返します。

//emlist[例][ruby]{
a = Thread.new { Thread.stop }
b = Thread.current
a.stop? # => true
b.stop? # => false
//}

@see Thread#alive?, Thread#status

Thread.DEBUG=(val) (9067.0)

スレッドのデバッグレベルを val に設定します。

スレッドのデバッグレベルを val に設定します。

val が 真 のときは Integer に変換してから設定します。
偽 のときは 0 を設定します。
使用するためには、THREAD_DEBUG を -1 にして Ruby をコンパイルする必要が
あります。

//emlist[例][ruby]{
Thread.DEBUG # => 0
Thread.DEBUG = 1
Thread.DEBUG # => 1
//}

@see Thread.DEBUG

Thread::Queue#deq(non_block = false) -> object (9067.0)

キューからひとつ値を取り出します。キューが空の時、呼出元のスレッドは停止します。

キューからひとつ値を取り出します。キューが空の時、呼出元のスレッドは停止します。

@param non_block true を与えると、キューが空の時に例外 ThreadError が発生します。

//emlist[例][ruby]{
require 'thread'

q = Queue.new

th1 = Thread.start do
while resource = q.pop
puts resource
end
end

[:resource1, :resource2, :resource3, nil].each { |r|
q.push(r)
}

t...

絞り込み条件を変える

Thread::Queue#pop(non_block = false) -> object (9067.0)

キューからひとつ値を取り出します。キューが空の時、呼出元のスレッドは停止します。

キューからひとつ値を取り出します。キューが空の時、呼出元のスレッドは停止します。

@param non_block true を与えると、キューが空の時に例外 ThreadError が発生します。

//emlist[例][ruby]{
require 'thread'

q = Queue.new

th1 = Thread.start do
while resource = q.pop
puts resource
end
end

[:resource1, :resource2, :resource3, nil].each { |r|
q.push(r)
}

t...

ruby 1.8.4 feature (1369.0)

ruby 1.8.4 feature ruby 1.8.4 での ruby 1.8.3 からの変更点です。

ruby 1.8.4 feature
ruby 1.8.4 での ruby 1.8.3 からの変更点です。

掲載方針

*バグ修正の影響も含めて動作が変わるものを収録する。
*単にバグを直しただけのものは収録しない。
*ライブラリへの単なる定数の追加は収録しない。

以下は各変更点に付けるべきタグです。

記号について(特に重要なものは大文字(主観))

# * カテゴリ
# * [ruby]: ruby インタプリタの変更
# * [api]: 拡張ライブラリ API
# * [lib]: ライブラリ
* レベル
* [bug]: バグ修正
* [new]: 追加され...

ruby 1.6 feature (451.0)

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

ruby 1.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 がなくなっ
ていま...

Open3.#popen3(*cmd) -> [IO, IO, IO, Thread] (421.0)

外部プログラム cmd を実行し、そのプロセスの標準入力、標準出力、標準エラー 出力に接続されたパイプと実行したプロセスを待つためのスレッドを 4 要素の 配列で返します。

外部プログラム cmd を実行し、そのプロセスの標準入力、標準出力、標準エラー
出力に接続されたパイプと実行したプロセスを待つためのスレッドを 4 要素の
配列で返します。

require 'open3'
stdin, stdout, stderr, wait_thr = *Open3.popen3("/usr/bin/nroff -man")

@param cmd 実行するコマンドを指定します。

@return ブロックを指定した場合はブロックの最後に評価された値を返します。
ブロックを指定しなかった場合は標準入力、標準出力、標準エラー出
力と...

Open3.#popen3(*cmd) {|stdin, stdout, stderr, wait_thr| ... } -> () (421.0)

外部プログラム cmd を実行し、そのプロセスの標準入力、標準出力、標準エラー 出力に接続されたパイプと実行したプロセスを待つためのスレッドを 4 要素の 配列で返します。

外部プログラム cmd を実行し、そのプロセスの標準入力、標準出力、標準エラー
出力に接続されたパイプと実行したプロセスを待つためのスレッドを 4 要素の
配列で返します。

require 'open3'
stdin, stdout, stderr, wait_thr = *Open3.popen3("/usr/bin/nroff -man")

@param cmd 実行するコマンドを指定します。

@return ブロックを指定した場合はブロックの最後に評価された値を返します。
ブロックを指定しなかった場合は標準入力、標準出力、標準エラー出
力と...

絞り込み条件を変える

Readline.#readline(prompt = "", add_hist = false) -> String | nil (409.0)

prompt を出力し、ユーザからのキー入力を待ちます。 エンターキーの押下などでユーザが文字列を入力し終えると、 入力した文字列を返します。 このとき、add_hist が true であれば、入力した文字列を入力履歴に追加します。 何も入力していない状態で EOF(UNIX では ^D) を入力するなどで、 ユーザからの入力がない場合は nil を返します。

prompt を出力し、ユーザからのキー入力を待ちます。
エンターキーの押下などでユーザが文字列を入力し終えると、
入力した文字列を返します。
このとき、add_hist が true であれば、入力した文字列を入力履歴に追加します。
何も入力していない状態で EOF(UNIX では ^D) を入力するなどで、
ユーザからの入力がない場合は nil を返します。

本メソッドはスレッドに対応しています。
入力待ち状態のときはスレッドコンテキストの切替えが発生します。

入力時には行内編集が可能で、vi モードと Emacs モードが用意されています。
デフォルトは Emacs モードです。
...

Socket.tcp_server_loop(host, port) {|sock,addr| ...} -> () (391.0)

TCP/IP で host:port で待ち受けるサーバ側のソケットを作成し、 新しい接続を受け入れるごとにブロックを呼び出します。

TCP/IP で host:port で待ち受けるサーバ側のソケットを作成し、
新しい接続を受け入れるごとにブロックを呼び出します。

ブロックには新しい接続を表すソケットオブジェクトと、
クライアントアドレスを表す Addrinfo オブジェクトが渡されます。

ブロックの実行が終わってもソケットは close されません。
アプリケーション側が明示的に close する必要があります。

このメソッドはブロックを逐次的に呼び出します。
つまりブロックからリターンするまで次のコネクションを受け入れません。
そのため、同時に複数のクライアントと通信したい場合は
スレッドのような並列機構を使う必...

Open3.#pipeline_r(*cmds) -> [IO, [Thread]] (373.0)

指定したコマンドのリストをパイプで繋いで順番に実行します。最後の コマンドの標準出力を受けとる事ができます。

指定したコマンドのリストをパイプで繋いで順番に実行します。最後の
コマンドの標準出力を受けとる事ができます。

@param cmds 実行するコマンドのリストを指定します。それぞれのコマンドは
以下のように String か Array で指定します。
commandline にはコマンド全体(例. "nroff -man")を表す
String を指定します。
options には Hash で指定します。
env には環境変数を Hash で指定します。
...

Open3.#pipeline_r(*cmds) {|last_stdout, wait_thrs| ... } -> () (373.0)

指定したコマンドのリストをパイプで繋いで順番に実行します。最後の コマンドの標準出力を受けとる事ができます。

指定したコマンドのリストをパイプで繋いで順番に実行します。最後の
コマンドの標準出力を受けとる事ができます。

@param cmds 実行するコマンドのリストを指定します。それぞれのコマンドは
以下のように String か Array で指定します。
commandline にはコマンド全体(例. "nroff -man")を表す
String を指定します。
options には Hash で指定します。
env には環境変数を Hash で指定します。
...

Open3.#pipeline_rw(*cmds) -> [IO, IO, [Thread]] (373.0)

指定したコマンドのリストをパイプで繋いで順番に実行します。最初の コマンドの標準入力に書き込む事も最後のコマンドの標準出力を受けとる事も できます。

指定したコマンドのリストをパイプで繋いで順番に実行します。最初の
コマンドの標準入力に書き込む事も最後のコマンドの標準出力を受けとる事も
できます。

@param cmds 実行するコマンドのリストを指定します。それぞれのコマンドは
以下のように String か Array で指定します。
commandline にはコマンド全体(例. "nroff -man")を表す
String を指定します。
options には Hash で指定します。
env には環境変数を...

絞り込み条件を変える

Open3.#pipeline_rw(*cmds) {|first_stdin, last_stdout, wait_thrs| ... } -> () (373.0)

指定したコマンドのリストをパイプで繋いで順番に実行します。最初の コマンドの標準入力に書き込む事も最後のコマンドの標準出力を受けとる事も できます。

指定したコマンドのリストをパイプで繋いで順番に実行します。最初の
コマンドの標準入力に書き込む事も最後のコマンドの標準出力を受けとる事も
できます。

@param cmds 実行するコマンドのリストを指定します。それぞれのコマンドは
以下のように String か Array で指定します。
commandline にはコマンド全体(例. "nroff -man")を表す
String を指定します。
options には Hash で指定します。
env には環境変数を...

Open3.#pipeline_w(*cmds) -> [IO, [Thread]] (373.0)

指定したコマンドのリストをパイプで繋いで順番に実行します。最初の コマンドの標準入力に書き込む事ができます。

指定したコマンドのリストをパイプで繋いで順番に実行します。最初の
コマンドの標準入力に書き込む事ができます。

@param cmds 実行するコマンドのリストを指定します。それぞれのコマンドは
以下のように String か Array で指定します。
commandline にはコマンド全体(例. "nroff -man")を表す
String を指定します。
options には Hash で指定します。
env には環境変数を Hash で指定します。
...

Open3.#pipeline_w(*cmds) {|first_stdin, wait_thrs| ... } -> () (373.0)

指定したコマンドのリストをパイプで繋いで順番に実行します。最初の コマンドの標準入力に書き込む事ができます。

指定したコマンドのリストをパイプで繋いで順番に実行します。最初の
コマンドの標準入力に書き込む事ができます。

@param cmds 実行するコマンドのリストを指定します。それぞれのコマンドは
以下のように String か Array で指定します。
commandline にはコマンド全体(例. "nroff -man")を表す
String を指定します。
options には Hash で指定します。
env には環境変数を Hash で指定します。
...

Open3.#popen2(*cmd) -> [IO, IO, Thread] (373.0)

cmdで指定されたコマンドを実行し、そのプロセスの標準入力・標準出力にパイ プをつなぎます。Open3.popen3に似ていますが、標準エラーを扱いません。

cmdで指定されたコマンドを実行し、そのプロセスの標準入力・標準出力にパイ
プをつなぎます。Open3.popen3に似ていますが、標準エラーを扱いません。

@param cmd 実行するコマンドを指定します。

@return ブロックを指定した場合はブロックの最後に評価された値を返します。
ブロックを指定しなかった場合は標準入力、標準出力に接続されたパ
イプと実行したプロセスを待つためのスレッドを返します。

Open3.#popen3と同様に引数に環境変数とオプションを指定してコマンド
を実行する事ができます。

@see Open3.#popen3
...

Open3.#popen2(*cmd) {|stdin, stdout, wait_thr| ... } -> () (373.0)

cmdで指定されたコマンドを実行し、そのプロセスの標準入力・標準出力にパイ プをつなぎます。Open3.popen3に似ていますが、標準エラーを扱いません。

cmdで指定されたコマンドを実行し、そのプロセスの標準入力・標準出力にパイ
プをつなぎます。Open3.popen3に似ていますが、標準エラーを扱いません。

@param cmd 実行するコマンドを指定します。

@return ブロックを指定した場合はブロックの最後に評価された値を返します。
ブロックを指定しなかった場合は標準入力、標準出力に接続されたパ
イプと実行したプロセスを待つためのスレッドを返します。

Open3.#popen3と同様に引数に環境変数とオプションを指定してコマンド
を実行する事ができます。

@see Open3.#popen3
...

絞り込み条件を変える

Open3.#popen2e(*cmd) -> [IO, IO, Thread] (373.0)

cmdで指定されたコマンドを実行し、そのプロセスの標準入力・標準出力と標準 エラーにパイプをつなぎます。Open3.popen3に似ていますが、標準出力と標準 エラーが1つの変数で扱われます。

cmdで指定されたコマンドを実行し、そのプロセスの標準入力・標準出力と標準
エラーにパイプをつなぎます。Open3.popen3に似ていますが、標準出力と標準
エラーが1つの変数で扱われます。

@param cmd 実行するコマンドを指定します。

@return ブロックを指定した場合はブロックの最後に評価された値を返します。
ブロックを指定しなかった場合は標準入力、標準出力と標準エラーに
接続されたパイプと実行したプロセスを待つためのスレッドを返しま
す。

Open3.#popen3と同様に引数に環境変数とオプションを指定してコマンド
...

Open3.#popen2e(*cmd) {|stdin, stdout_and_stderr, wait_thr| ... } -> () (373.0)

cmdで指定されたコマンドを実行し、そのプロセスの標準入力・標準出力と標準 エラーにパイプをつなぎます。Open3.popen3に似ていますが、標準出力と標準 エラーが1つの変数で扱われます。

cmdで指定されたコマンドを実行し、そのプロセスの標準入力・標準出力と標準
エラーにパイプをつなぎます。Open3.popen3に似ていますが、標準出力と標準
エラーが1つの変数で扱われます。

@param cmd 実行するコマンドを指定します。

@return ブロックを指定した場合はブロックの最後に評価された値を返します。
ブロックを指定しなかった場合は標準入力、標準出力と標準エラーに
接続されたパイプと実行したプロセスを待つためのスレッドを返しま
す。

Open3.#popen3と同様に引数に環境変数とオプションを指定してコマンド
...

PStore.new(file, thread_safe = false) -> PStore (355.0)

ファイル名 file に対してデータベースを読み書きします。

ファイル名 file に対してデータベースを読み書きします。

データベースを更新するときにバックアップファイルが作成されるため、
file のあるディレクトリは書き込み可能である必要があります。
データベースの更新が成功すると、バックアップファイルは削除されます。バックアップファイル名は
ファイル名に ".tmp" および ".new" を付けたものです。

@param file データベースファイル名。

@param thread_safe 真を指定すると Mutex を用いてスレッドセーフになります。
デフォルトは偽です。