[#6219] Ruby連載 第4話 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

32 messages 1998/02/04
[#6221] Re: Ruby連載 第4話 — Shin-ichiro HARA <sinara@...> 1998/02/04

原です。

[#6224] Re: Ruby連載 第4話 — Yasunari Momoi <conan@...> 1998/02/04

ももちゃん@あるもにこすです.

[#6225] Re: Ruby連載 第4話 — matz@... (Yukihiro Matsumoto) 1998/02/04

まつもと ゆきひろです

[#6249] Re: i++ — 助田 雅紀 <masaki.suketa@...>

助田です。

33 messages 1998/02/04
[#6252] Re: i++ — gotoken@... (GOTO Kentaro) 1998/02/05

ことけんです

[#6255] Re: i++ — matz@... (Yukihiro Matsumoto) 1998/02/05

まつもと ゆきひろです

[#6260] Re: i++ — Yuji Shigehiro <sigehiro@...> 1998/02/05

しげひろです.

[#6314] RE: ruby's design policy (Re: I'd like to subscr ibe this ML) — 助田 雅紀 <masaki.suketa@...>

オブジェクト指向周辺をぶらぶらしている助田です。

11 messages 1998/02/06

[#6333] ruby 流に添削して下さい — nkon@...2.3web.ne.jp

13 messages 1998/02/07
[#6335] Re: ruby 流に添削して下さい — OZAWA Sakuro <crouton@...> 1998/02/07

さくです.

[#6372] ruby 1.1b7 released — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

24 messages 1998/02/10
[#6402] parsedate (Re: ruby 1.1b7 released) — WATANABE Hirofumi <watanabe@...> 1998/02/13

わたなべです.

[#6405] Re: parsedate (Re: ruby 1.1b7 released) — Tadayoshi Funaba <tadf@...> 1998/02/13

ふなばです。

[#6407] Re: parsedate (Re: ruby 1.1b7 released) — matz@... (Yukihiro Matsumoto) 1998/02/13

まつもと ゆきひろです

[#6373] call for scripts — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

133 messages 1998/02/10
[#6414] Re: call for scripts — Terutuoshi Kaneshiro <k-teru@...06.odn.ne.jp> 1998/02/14

金城です.

[#6428] Re: call for scripts — matz@... (Yukihiro Matsumoto) 1998/02/16

まつもと ゆきひろです

[#6448] Re: call for scripts — Terutuoshi Kaneshiro <k-teru@...06.odn.ne.jp> 1998/02/16

金城です.

[#6452] Re: call for scripts — matz@... (Yukihiro Matsumoto) 1998/02/17

まつもと ゆきひろです

[#6481] Re: call for scripts — Kikutani Makoto <kikutani@...> 1998/02/17

きくたに@ぷ〜たろ〜です。

[#6483] Re: call for scripts — OZAWA Sakuro <crouton@...> 1998/02/17

さくです.

[#6495] Re: call for scripts — WATANABE Hirofumi <watanabe@...> 1998/02/18

わたなべです.

[#6416] Re: call for scripts — shugo@... (Shugo Maeda) 1998/02/14

前田です。

[#6417] rgrep (Re: call for scripts) — shugo@... (Shugo Maeda) 1998/02/15

前田です。

[#6423] Re: rgrep (Re: call for scripts) — matz@... (Yukihiro Matsumoto) 1998/02/16

まつもと ゆきひろです

[#6612] Re: call for scripts — Tadayoshi Funaba <tadf@...> 1998/02/21

ふなばです。

[#6582] File::Separator on cygwin — OZAWA Sakuro <ozawa@...>

小澤さくです。

19 messages 1998/02/20
[#6583] Re: File::Separator on cygwin — WATANABE Hirofumi <watanabe@...> 1998/02/20

わたなべです.

[#6586] Re: File::Separator on cygwin — OZAWA Sakuro <ozawa@...> 1998/02/20

小澤さくです。

[#6591] ruby 1.1b8 released — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

32 messages 1998/02/20
[#6620] rbc.rb and binding — shugo@... (Shugo Maeda) 1998/02/22

前田です。

[#6629] Re: rbc.rb and binding — keiju@... (石塚圭樹 ) 1998/02/23

けいじゅ@日本ラショナルソフトウェアです.

[#6643] Re: rbc.rb and binding — shugo@... (Shugo Maeda) 1998/02/23

前田です。

[#6649] Re: rbc.rb and binding — keiju@... (石塚圭樹 ) 1998/02/23

けいじゅ@日本ラショナルソフトウェアです.

[#6650] Re: rbc.rb and binding — matz@... (Yukihiro Matsumoto) 1998/02/23

まつもと ゆきひろです

[#6667] JRI 0.5 worked (was Re: rbc.rb and binding) — OZAWA Sakuro <crouton@...> 1998/02/23

さくです.

[#6687] Re: JRI 0.5 worked (was Re: rbc.rb and binding) — shugo@... (Shugo Maeda) 1998/02/24

前田です。

[#6712] JRI and JDBC — OZAWA Sakuro <ozawa@...> 1998/02/24

小澤さくです。

[#6635] hello — WATANABE Tetsuya <tetsu@...>

渡辺哲也と申します。

15 messages 1998/02/23

[#6706] Re: Counter class — toyofuku@...

豊福@パパイヤです。

12 messages 1998/02/24

[#6735] Mutex/ConditionVariable/Queue — shugo@... (Shugo Maeda)

前田です。

27 messages 1998/02/24
[#6746] Re: Mutex/ConditionVariable/Queue — keiju@... (石塚圭樹 ) 1998/02/25

けいじゅ@日本ラショナルソフトウェアです.

[#6747] Re: Mutex/ConditionVariable/Queue — shugo@... (Shugo Maeda) 1998/02/25

前田です。

[#6752] Re: Mutex/ConditionVariable/Queue — senda@... 1998/02/25

From: shugo@po.aianet.ne.jp (Shugo Maeda)

[#6754] Re: Mutex/ConditionVariable/Queue — shugo@... (Shugo Maeda) 1998/02/25

前田です。

[#6756] Re: Mutex/ConditionVariable/Queue — senda@... 1998/02/25

From: shugo@po.aianet.ne.jp (Shugo Maeda)

[#6786] Re: Mutex/ConditionVariable/Queue — senda@...

From: shugo@po.aianet.ne.jp (Shugo Maeda)

33 messages 1998/02/26
[#6791] Re: Mutex/ConditionVariable/Queue — shugo@... (Shugo Maeda) 1998/02/26

前田です。

[#6794] Re: Mutex/ConditionVariable/Queue — shugo@... (Shugo Maeda) 1998/02/26

前田です。

[#6796] Re: Mutex/ConditionVariable/Queue — keiju@... (石塚圭樹 ) 1998/02/26

けいじゅ@日本ラショナルソフトウェアです.

[ruby-list:6774] Re: Mutex/ConditionVariable/Queue

From: senda@...
Date: 1998-02-26 02:51:07 UTC
List: ruby-list #6774
From: shugo@po.aianet.ne.jp (Shugo Maeda)
Subject: [ruby-list:6770] Re: Mutex/ConditionVariable/Queue
Date: Wed, 25 Feb 1998 20:31:43 +0900
Message-ID: <199802251129.LAA00363@soleil.localnet.or.jp>

shugo> 前田です。
shugo> 
shugo> In message "[ruby-list:6767] Re: Mutex/ConditionVariable/Queue"
shugo> Yukihiro Matsumoto <matz@netlab.co.jp> wrote:
shugo> 
shugo> ||Rubyのスレッドは全部同じ優先度で均等に実行される(ですよね?)ので
shugo> ||多分問題ないと思うのですが、実際のところどうなんでしょう。
shugo> |
shugo> |現状のrubyのスレッドに優先度が無いのは本当です.問題が無いか
shugo> |どうかは私には分かんないんです.すいません.
shugo> 
shugo> JavaだとUNIX版ではタイマーによるスケジューリングイベントがな
shugo> いので一つのスレッドが走り続けたりしますけど、Rubyではそうい
shugo> うことがないので特にスケジューリングを気にしなくても問題は起
shugo> きないんじゃないかなと思っていました。
shugo> # というのは楽観的すぎるのでしょうか>Sendaさん

ええと、Threadのユーザであっても実装者ではないので内部の都合で必要かどうか
は良くわからないのですが、

ただ、ユーザの立場で優先度を変えたい場合というのは、アプリケーションと計算
機の資源の関係で決まると思います。資源に余裕のあるときは別に優先度を変えた
いなんて思いません。だけれど、やりたいことに対して資源がギリギリであるよう
な場合チューニングが必要になってきます。

たとえば、rubyでTkでGUIを作って裏で何らかの計算やファイル入出力をやってい
るとするとき、裏の仕事が軽い場合は何にも問題はないのですが、おもい場合、
GUIのレスポンスが悪くなっては困るので表の方の優先度をあげたいとかいうこと
はよくある話です。

># threadの実装は良く知らないのですが、signal()のあとどこのthreadに制御を
># 移すかがキモらしい。

このたわごとの出典は
	T.Q.パム、P.K.ガーク 著  川手恭輔 訳
	WindowsNT マルチスレッドプログラミング入門 (トッパン)
のモニタのシミュレートの章なのですが、
読み直してみるとスレッドの実装の問題ではなく条件変数の処理に関わるものでし
た。この章であまり良くない実装例として上がっているものと前田さんの実装が一
致しています。:-(

  def wait(mutex)
    mutex.unlock   # <------------------ (a)
    @waiters_mutex.synchronize {
      @waiters.push(Thread.current)
    }
    Thread.stop
    mutex.lock     # <------------------ (b)
  end
  
上のmutexを解除した時点(a)で別のスレッドが動きだしそれが条件を偽にする可能
性があります。つまり、signal()によって起されたスレッドに制御を移したいのに
そうならない場合が起きてくるわけです。

# べつにそうなったからといって全体の動作が狂うわけではない。

この本ではそうならない実装として
	Signal-Return   : signalしたプロセスを直ちにreturnさせる。単純。
	Signal-Urgent   : signalを受け取ったスレッドを走らせる。発行元に
			  次に走るプライオリティを与える。公平。
	Signal-Continue : シグナルを発行したThreadをそのまま走らせる。

の3つのやり方が紹介されています。詳しくはこの本か別の文献を当たってみてく
ださい。

# Rubyで書いて示したいところだけれど今時間が。。
# 土日にかいてみてもよいけれど。

							S.Senda

In This Thread