[#14715] HTTP Client with Ruby — TAKAHASHI Masayoshi <maki@...>
高橋征義です。
なひです.
高橋征義です。
ごとけんです
なひです.
高橋です。みなさまどうもありがとうございます。
なひです.
前橋です。
なひです.
なひです.すいません,駄目です.^^;
[#14747] Ruby-gtk の Text Widget について — Takano Naoki <takanon@...>
はじめまして。
[#14763] do end + do end — Wakou Aoyama <wakou@...>
青山です。
[#14765] ruby 1.3.4 with ipv6 — Yasunari Momoi <momo@...>
ruby 1.3.4 を入れたんですが,IPv6 対応しているんですね (^^).
[#14766] ruby 1.3.4 on BSD/OS 3.1 — Yasunari Momoi <momo@...>
BSD/OS 3.1 (with kame) で ruby-1.3.4 を作ろうとしているんで
まつもと ゆきひろです
前田です。
わたなべです.
[#14790] Microsoft Perl ? — ARIMA Yasuhiro <fit0298@...>
有馬です。
[#14833] Regacy scripts depend the ruby old version. — ARIMA Yasuhiro <fit0298@...>
有馬です。
[#14842] texinfo document for ruby-1.3 — Koji Arai <JCA02266@...>
新井です。
まつもと ゆきひろです
新井です。
From: Koji Arai <JCA02266@nifty.ne.jp>
[#14854] Rubyfaq-990607 — Akira Endo <akendo@...3.rim.or.jp>
遠藤です.
[#14860] CVSup server — Yasuhiro Fukuma <yasuf@...>
福間%未読メールどっさり@福岡 です。
[#14863] OO Software Construction by Meyer — Akira Endo <akendo@...3.rim.or.jp>
遠藤です.
[#14874] ruby-gtk trouble — Jun Adachi <adachi@...>
安達@沖データと申します。
[#14900] Rubyfaq-990608 — Akira Endo <akendo@...3.rim.or.jp>
遠藤です.
[#14917] Ruby/Tk and Threads — Tomoyuki Kosimizu <greentea@...2.so-net.ne.jp>
こんにちは、越水です。
[#14953] 男親なら誰でも思う — 中村暁史 <anakamur@...>
[#14957] textarea with CGI.rb — HATTORI Masashi <hattori@...>
服部といいます。こんにちは。
[#14970] thread with curses — HATTORI Masashi <hattori@...>
服部といいます。こんにちは。
[#14980] 初期化メソッドの追加 — ARIMA Yasuhiro <fit0298@...>
有馬です。
[#15003] 文字列から数値への変換失敗を検出したい — ARIMA Yasuhiro <fit0298@...>
有馬です。
[#15012] ext ML の過去ログはいずこ? — 中村暁史 <anakamur@...>
原です。
akaishi です。
わたなべです.
前田です。
[#15045] mail library — Minero Aoki <aamine@...>
あおきです。
あおきです。
あおきです。
まつもと ゆきひろです
わたなべです.
まつもと ゆきひろです
石橋秀仁です.
あおきです。
まつもと ゆきひろです
あおきです。
なひです.
あおきです。
なひです.
松尾です。
なひです.
松尾です。
有馬@FITECです。
松尾です。
はじめまして、岩間です。
なひです.mod_rubyと格闘中です.
なひです.mod_rubyネタはruby-listでよいでしょうか?
前田です。
なひです.
前田です。
なひです.
小松です。
前田です。
小松です。
前田です。
小松です。
前田です。
小松です。
まつもと ゆきひろです
たむら です。
あおきです。
まつもと ゆきひろです
あおきです。
まつもと ゆきひろです
あおきです。
[#15057] 複雑?な構造体の定義方法 — Koichi Shigematsu <shige@...>
しげまつ と申します。 とっても久しぶりの投稿です。
まつもと ゆきひろです
しげまつ です。
まつもと ゆきひろです
ごとけんです
まつもと ゆきひろです
ごとけんです
まつもと ゆきひろです
In message "[ruby-list:15078] Re: pattern (Re: 複雑?な構造体の定義方法)"
[#15093] String#rindex with arbitrary starting point — kjana@... (YANAGAWA Kazuhisa)
「String#rindex の第二引数ってば,探索を『始める』ポイントじゃなくて
前田です。
[#15112] pty on NeXTSTEP3.3J — SHIROYAMA Takayuki <psi@...>
[#15116] irb & ruby — Takashi Nishimoto <g96p0935@...>
ruby の最新版 (990625) を /usr/local 以下にインストールしたのですが、
[#15121] ruby-gtk-0.19 released — Hiroshi Igarashi <igarashi@...>
いがらし%Ruby/GTKメンテナ です。
From: Hiroshi Igarashi <igarashi@ueda.info.waseda.ac.jp>
いがらしです。
[#15131] game of life: ruby/gtk version — Takahiro Maebashi <maebashi@...>
前橋です。
[#15160] undefined method `-@' for Fixnum (NameError) — Tomoyuki Kosimizu <greentea@...2.so-net.ne.jp>
こんにちは、越水です。
まつもと ゆきひろです
[ruby-list:14882] Re: ConditionVariable (again)
原です。
In message "[ruby-list:14847] Re: ConditionVariable (again)"
on 99/06/07, Shugo Maeda <shugo@netlab.co.jp> writes:
|
|前田です。
|> 結局、私のあの単純な CV のコード(cv2.rb)、あれはあれでちゃん
|> と動くんですよね。
|
|競合する(条件を偽にしようとする)スレッドにロックを横取りされる可
|能性はあります。
そうですね。だから、ユーザーの条件変数の一般的利用法としては、
mutex.synchronize {
...
if ある条件
cond_var.wait(mutex)
end
...
}
ではなくて、スレッドにロックを横取りされることを前提に
mutex.synchronize {
...
while ある条件
cond_var.wait(mutex)
end
...
}
と書くべきなんですね。せきさんのプログラムでは前者で十分だけど。
|ただ、私のコードでも、競合するスレッドで、
|
|1000.times do
| break if m.try_lock
| Thread.pass
|end
|
|などとされるとだめですね。
monitor.rb では、signal のスレッドから1周する間に競合するス
レッドの幾つかを止めて回るので、2周目、sinal のスレッドから
wait のスレッドに移動する間に邪魔される確率が減る、またそこ
でロックを横取りされても優先的に取り戻すので同じスレッドに2
度邪魔されることは殆んどない(1度はあるかもしれないが)、と
いう様なメカニズムでしょうか。
実験:
-----^ test1.rb
#!/usr/bin/ruby
Thread.abort_on_exception = true
require "monitor"
$mutex = Monitor.new
$full = $mutex.new_cond
$empty = $mutex.new_cond
$queue = []
$max = 1
$waste = 0
$waste1 = 0
3.times do
Thread.new {
n = 0
loop do
$mutex.synchronize {
k = 0
while $queue.size >= $max
k += 1
$full.wait
$waste += 1 if k > 1
end
$waste1 += 1 if k > 1
$queue.push n
$empty.signal if $queue.size >= 1
}
n += 1
end
}
end
1000.times do
$mutex.synchronize {
while $queue.size <= 0
$empty.wait
end
v = $queue.shift
$full.signal if $queue.size < $max
}
end
print $waste, ", ", $waste1, "\n"
-----$ test1.rb
これを実行すると $waste == $waste1 で一桁ぐらいです。
これを cv2.rb の ConditionVariable で書くと $waste1 が
数倍、$waste は数十倍。かなり違うものですね。