[#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:14819] Re: ConditionVariable (again)

From: Shin-ichiro Hara <sinara@...>
Date: 1999-06-04 13:09:16 UTC
List: ruby-list #14819
原です。

In message "[ruby-list:14813] Re: ConditionVariable (again)"
    on 99/06/04, Shugo Maeda <shugo@netlab.co.jp> writes:
|
|前田です。

|> signal の後、条件が変わってしまって、、、という [ruby-list:6735]
|> 以降のスレッドで議論された問題は run を使う限りないと思うのです
|> がどうでしょうか。
|
|たしかスケジューリングの話ですよね。
|具体的にどういう内容かはすっかり忘れました(^_^;)が、monitor.rbで
|は効率を犠牲にして安全側に倒した覚えがあります。

ふーむ。monitor.rb は私にとって幾つか謎があります。

例えば Thread#run が一つも無くて、Thread#wakeup のみが使われている
こと。これも、スケジューリング問題の調整のためでしょうか。あとロッ
クの owner という概念があって、そこかしこに、owner がずれてると例外
を発生させる様になっているところとか。owner はカウントつきロックの
ためにだけあるのでは無いようですね。


|> mutex.rb があるにもかかわらず、現在の thread.rb に入っている CV

あ、またまたすいません。monitor.rb の書き間違いです。(^^;


|> #同じ事が monitor.rb でも問題になると思いますが、大丈夫なのかな。
|
|monitor.rbだとwaitの中のmutex.unlock相当の処理をConditionVariable
|の方で直接制御しているので、大丈夫だと思います。(たぶん)

monitor.rb は全部自前でバンバンしているんですね。

私はスレッドに関するプログラムがちゃんと動くかどうか検証するのに
あちこちに(critical である所とか、キューに回って Thread.stop した
直後とかは避けて)Thread.pass を入れて強制的にスレッドの切替を起こ
してみるのですが、monitor.rb で問題になりそうな所でやってみました。

まず monitor.rb コピー mon-test.rb を取ります。:-)
そして、253行目あたり、クリティカルセクションが終った所で pass さ
せます。

----------------------------------
      Thread.critical = false
MON_EXIT
Thread.pass
----------------------------------

そして、下の(せきさんの TinyQueue でインプットを2つにした)
スクリプトを動かします。

するとやはり dead lock が起こります。(Linux です。)
詳しい動作はわからないのですが、、、(直前の Thread.critical
 = false を削除しても直らない)。


-----------------^ test1.rb
#!/usr/bin/ruby
require "mon-test.rb"

Thread.abort_on_exception = true

class TinyQueue
  def initialize(max=2)
    @max = max
    @mutex = Monitor.new
    @full = @mutex.new_cond
    @empty = @mutex.new_cond
    @q = []
  end
  
  def count
    @q.size
  end
  
  def enq(v)
    @mutex.synchronize {
      @full.wait if count == @max
      @q.push v
      @empty.signal if count == 1 
    }
  end
  
  def deq
    @mutex.synchronize {
      @empty.wait if count == 0
      v = @q.shift
      @full.signal if count == (@max - 1)
      v
    }
  end
  
  alias send enq
  alias recv deq
end

q = TinyQueue.new(1)

foods = 'Apple Banana1 Strawberry Udon Rice Milk'.split

l = []

sender_size = 2

sender_size.times do
  th = Thread.new {
    for obj in foods
      q.send(obj) 
      print "sent ", obj, "\n"
    end
    q.send nil
  }
  l.push th
end


th = Thread.new {
  c = 0
  loop do
    obj = q.recv
    c += 1 if obj == nil
    print "  recv ", obj, "\n"
    break if c >= sender_size
  end
}
l.push th

l.each do |t|
  Thread.join t
end
-----------------$ test1.rb

In This Thread