[#14715] HTTP Client with Ruby — TAKAHASHI Masayoshi <maki@...>

高橋征義です。

32 messages 1999/06/01
[#14834] Re: HTTP Client with Ruby — "NAKAMURA, Hiroshi" <nakahiro@...> 1999/06/05

なひです.

[#14836] Re: HTTP Client with Ruby — TAKAHASHI Masayoshi <maki@...> 1999/06/05

高橋征義です。

[#14858] Re: HTTP Client with Ruby — gotoken@... (GOTO Kentaro) 1999/06/07

ごとけんです

[#14896] Re: HTTP Client with Ruby — TAKAHASHI Masayoshi <maki@...> 1999/06/07

高橋です。みなさまどうもありがとうございます。

[#14907] Re: HTTP Client with Ruby — "NAKAMURA, Hiroshi" <nakahiro@...> 1999/06/08

なひです.

[#14766] ruby 1.3.4 on BSD/OS 3.1 — Yasunari Momoi <momo@...>

BSD/OS 3.1 (with kame) で ruby-1.3.4 を作ろうとしているんで

18 messages 1999/06/03
[#14770] Re: ruby 1.3.4 on BSD/OS 3.1 — matz@... (Yukihiro Matsumoto) 1999/06/03

まつもと ゆきひろです

[#15012] ext ML の過去ログはいずこ? — 中村暁史 <anakamur@...>

22 messages 1999/06/16
[#15013] Re: ext ML の過去ログはいずこ? — Shin-ichiro Hara <sinara@...> 1999/06/16

原です。

[#15014] Re: ext ML の過去ログはいずこ? — 中村暁史 <anakamur@...> 1999/06/16

[#15015] Re: ext ML の過去ログはいずこ? — Kazunori Akaishi <akaishi@...> 1999/06/16

akaishi です。

[#15016] Re: ext ML の過去ログはいずこ? — 中村暁史 <anakamur@...> 1999/06/16

[#15045] mail library — Minero Aoki <aamine@...>

あおきです。

96 messages 1999/06/20
[#15075] Re: mail library — Minero Aoki <aamine@...> 1999/06/22

あおきです。

[#15122] Re: mail library — Minero Aoki <aamine@...> 1999/06/28

あおきです。

[#15123] Re: mail library — matz@... (Yukihiro Matsumoto) 1999/06/28

まつもと ゆきひろです

[#15125] Re: mail library — WATANABE Hirofumi <watanabe@...> 1999/06/28

わたなべです.

[#15126] Re: mail library — matz@... (Yukihiro Matsumoto) 1999/06/28

まつもと ゆきひろです

[#15146] Re: mail library — Minero Aoki <aamine@...> 1999/06/29

あおきです。

[#15148] Re: mail library — matz@... (Yukihiro Matsumoto) 1999/06/29

まつもと ゆきひろです

[#15161] Re: mail library — Minero Aoki <aamine@...> 1999/06/30

あおきです。

[#15165] Re: mail library — "NAKAMURA, Hiroshi" <nakahiro@...> 1999/06/30

なひです.

[#15167] Re: mail library — Minero Aoki <aamine@...> 1999/06/30

あおきです。

[#15219] Re: mail library — "NAKAMURA, Hiroshi" <nakahiro@...> 1999/07/03

なひです.

[#15228] Re: mail library — hisanori@... 1999/07/05

松尾です。

[#15279] Re: mail library — "NAKAMURA, Hiroshi" <nakahiro@...> 1999/07/07

なひです.

[#15172] Re:mail library — Takeo Iwama <iwamat@...> 1999/07/01

はじめまして、岩間です。

[#15218] JUS workshop ( was Re:mail library ) — "NAKAMURA, Hiroshi" <nakahiro@...> 1999/07/03

なひです.mod_rubyと格闘中です.

[#15220] Mod_ruby server does not respond when POST request. — "NAKAMURA, Hiroshi" <nakahiro@...> 1999/07/03

なひです.mod_rubyネタはruby-listでよいでしょうか?

[#15226] Re: Mod_ruby server does not respond when POST request. — Shugo Maeda <shugo@...> 1999/07/05

前田です。

[#15240] mod_ruby/0.1.2 with Apache/1.3.6 on Solaris/2.5.1 ( was Re: Mod_ruby server does not respond when POST request. ) — "NAKAMURA, Hiroshi" <nakahiro@...> 1999/07/05

なひです.

[#15242] Re: mod_ruby/0.1.2 with Apache/1.3.6 on Solaris/2.5.1 ( was Re: Mod_ruby server does not respond when POST request. ) — Shugo Maeda <shugo@...> 1999/07/05

前田です。

[#15308] Re: mod_ruby/0.1.2 with Apache/1.3.6 on Solaris/2.5.1 — Katsuyuki Komatsu <komatsu@...> 1999/07/08

小松です。

[#15310] Re: mod_ruby/0.1.2 with Apache/1.3.6 on Solaris/2.5.1 — Shugo Maeda <shugo@...> 1999/07/08

前田です。

[#15313] Re: mod_ruby/0.1.2 with Apache/1.3.6 on Solaris/2.5.1 — Katsuyuki Komatsu <komatsu@...> 1999/07/08

小松です。

[#15057] 複雑?な構造体の定義方法 — Koichi Shigematsu <shige@...>

しげまつ と申します。  とっても久しぶりの投稿です。

18 messages 1999/06/21
[#15058] Re: 複雑?な構造体の定義方法 — matz@... (Yukihiro Matsumoto) 1999/06/21

まつもと ゆきひろです

[#15059] Re: 複雑?な構造体の定義方法 — Koichi Shigematsu <shige@...> 1999/06/21

しげまつ です。

[#15061] Re: 複雑?な構造体の定義方法 — matz@... (Yukihiro Matsumoto) 1999/06/21

まつもと ゆきひろです

[#15065] pattern (Re: 複雑?な構造体の定義方法) — gotoken@... (GOTO Kentaro) 1999/06/21

ごとけんです

[#15076] Re: pattern (Re: 複雑?な構造体の定義方法) — matz@... (Yukihiro Matsumoto) 1999/06/22

まつもと ゆきひろです

[#15077] Re: pattern (Re: 複雑?な構造体の定義方法) — gotoken@... (GOTO Kentaro) 1999/06/22

ごとけんです

[ruby-list:14807] ConditionVariable (again)

From: Shin-ichiro Hara <sinara@...>
Date: 1999-06-04 07:18:42 UTC
List: ruby-list #14807
原です。

復活しました。条件変数の話、もう少しつき合って下さい。

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つの条件変数」という好例でした。私の提案はピントはず
れでしたね。

In This Thread