[#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:14807] ConditionVariable (again)
原です。
復活しました。条件変数の話、もう少しつき合って下さい。
In message "[ruby-list:14512] Re: ConditionVariable (thread.rb)"
on 99/05/25, Shugo Maeda <shugo@netlab.co.jp> writes:
|
|前田です。
|
|At Tue, 25 May 1999 16:34:31 +0900,
|Shin-ichiro Hara <sinara@blade.nagaokaut.ac.jp> wrote:
|> |本来、Thread.critical = trueとしてThread.stopするまではスケジュー
|> |リングイベントが起こらないようにするべきなんです。
|> |でないと、Thread.stopする前にrunを呼ばれてしまう。
|>
|> そうではなくて、Thread.stop する時は排他制御されていないのが
|> 問題なのでは? Thread.critical = true しても、Thread.stop し
|> たとき他に制御が移りますね。そっちでまた Thread.stop して、、
|> とうとうみんな stop するのでは?
|
|制御が移った後、どうして他のスレッドもすべてThread.stopするのですか?
|むしろ、Thread.stopで他に制御が移るのは当り前で、他に制御が移らな
|かったら条件が満たされることもないと思うのですが。
Thread.stop で他に制御が移るのは当り前なんですが、そのとき
全く排他制御がなくなってますよね。それが気妙な気がしたんで
す。どんな mutex にも lock がかかっていないので、何があって
もおかしくない状態なわけです。それでうまく行くのかどうか。
直観的にヤバそうな気がするのですが、、、
|> |でないと、Thread.stopする前にrunを呼ばれてしまう。
この事は私は十分理解していなかった様です。Thread.stop する
前に run 待ちのキューに入れられて、まだ stop してないのに
run されるという無効な動作の後で stop する。それがあのケー
スのデッドロックの直接的原因なんですね。分かりました。
|条件変数でwaitした時に、条件が満たされるために働いている他のスレッ
|ドが存在することは、絶対的な前提条件だと思います。
なるほど、そうですね。その前提条件が満たされないとしたら
ConditionVariable のライブラリの責任ではなくて、そのユーザ
ーのコードに問題があると。当り前か。(^^;
#と、いうことは条件変数を利用するプログラムはデッドロックを防ぐ
#ためかなり注意が必要になるんだなあ。例えば [ruby-list:14445]の咳
#さんの TinyQueue でいうと、wait を呼ぶのは
#
# @full.wait(@mutex) if count == @max
#
#と、
#
# @empty.wait(@mutex) if count == 0
#
#の2行だけれど、この count == @max と count == 0 が排他的な条
#件だからうまく動いているのだと言える。そうでなければデッドロッ
#クがありえる。
|> |# monitor.rbではThread.critical = trueにしてます。
|>
|> monitor.rb って難しい。これの ConditionVariable で TinyQueue は
|> どう書きますか?
|
|ソースはややこしいですが、使い方はMutexとほとんど同じです。
|
| @mutex = Monitor.new
| @full = @mutex.new_cond
| @empty = @mutex.new_cond
|
|あとはwaitさせるだけです。
|
|@full.wait_while { count == @max }
ありがとうございました。見事に動きました。
monitor.rb をちょっと眺めたんですが、この難しさの半分は excludable に
するための(石塚流?)メタプログラミングによるものですね。しかし、そこ
を飛ばしてもやっぱり難しい。
|> そもそも「wait(mutex) に渡す mutex とはどんなものですか?」という
|> のが問題だったんですが、どう答えるのがいいのかなあ。
|
|条件変数を「あるリソースが特定の条件を満たすのを待つ」ためのもの
|と考えれば、そのリソースを保護しているmutexだと考えられるのではな
|いでしょうか。
|リソースとロックは一対一対応ですが、リソースと条件変数は一対他対
|応なので、ロックと条件変数を一致させるのはやはり無理があると思い
|ます。
なるほど、これで理解しました。咳さんのプログラムがまさに「ひとつ
のロック、2つの条件変数」という好例でした。私の提案はピントはず
れでしたね。