[#30072] send/__send__ and private method — SASADA Koichi <ko1@...>
ささだです。
13 messages
2007/01/04
[#30095] Re: send/__send__ and private method
— Yukihiro Matsumoto <matz@...>
2007/01/06
まつもと ゆきひろです
[#30103] Re: send/__send__ and private method
— SASADA Koichi <ko1@...>
2007/01/07
ささだです。
[#30096] version.h maintenance — SASADA Koichi <ko1@...>
ささだです。
7 messages
2007/01/06
[#30099] Re: [ ruby-Bugs-5822 ] Ruby's 'etc' module cannot handle the UID of OS X 'nobody' properly — Urabe Shyouhei <shyouhei@...>
卜部です。太古のメールに返信する上に-devに振ってしまって恐縮ですが、
6 messages
2007/01/06
[#30100] Re: [ ruby-Bugs-5822 ] Ruby's 'etc' module cannot handle the UID of OS X 'nobody' properly
— Yukihiro Matsumoto <matz@...>
2007/01/06
まつもと ゆきひろです
[#30102] Re: [ ruby-Bugs-5822 ] Ruby's 'etc' module cannot handle the UID of OS X 'nobody' properly
— Urabe Shyouhei <shyouhei@...>
2007/01/07
卜部です
[#30115] Re: [ ruby-Bugs-5822 ] Ruby's 'etc' module cannot handle the UID of OS X 'nobody' properly
— Yukihiro Matsumoto <matz@...>
2007/01/08
まつもと ゆきひろです
[#30139] BASERUBY — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
6 messages
2007/01/16
[#30159] := operator — SASADA Koichi <ko1@...>
ささだです。
11 messages
2007/01/23
[#30161] Re: := operator
— Yukihiro Matsumoto <matz@...>
2007/01/23
まつもと ゆきひろです
[#30164] Re: := operator
— SASADA Koichi <ko1@...>
2007/01/23
ささだです。
[#30163] pre-processor での YARV 判定 — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
13 messages
2007/01/23
[#30165] Re: pre-processor での YARV 判定
— "U.Nakamura" <usa@...>
2007/01/23
こんにちは、なかむら(う)です。
[#30166] Re: pre-processor での YARV 判定
— SASADA Koichi <ko1@...>
2007/01/23
ささだです。
[#30169] Re: pre-processor での YARV 判定
— Yukihiro Matsumoto <matz@...>
2007/01/23
まつもと ゆきひろです
[#30171] Re: pre-processor での YARV 判定
— "Nobuyoshi Nakada" <nobu@...>
2007/01/23
なかだです。
[#30178] Re: [ruby-cvs:18815] Ruby:r11571: * misc/ruby-mode.el (ruby-font-lock-syntactic-keywords): fix — Urabe Shyouhei <shyouhei@...>
卜部です。これruby_1_8_5にも入れていただくことって可能ですか?
5 messages
2007/01/24
[#30181] Open3.popen3 の終了処理 — とみたまさひろ <tommy@...>
とみたです。
5 messages
2007/01/24
[#30199] YARV の thread について — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
7 messages
2007/01/28
[#30200] coredump on Mac OS X — "T.Kanai" <tin.k.gm@...>
はじめまして、まるまる と申します。
8 messages
2007/01/28
[#30206] local var name collision in instruby.rb (matzruby) — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
7 messages
2007/01/29
[#30207] Re: local var name collision in instruby.rb (matzruby)
— Yukihiro Matsumoto <matz@...>
2007/01/29
まつもと ゆきひろです
[#30208] Re: local var name collision in instruby.rb (matzruby)
— "U.Nakamura" <usa@...>
2007/01/29
こんにちは、なかむら(う)です。
[#30211] String#sub!{...} — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
8 messages
2007/01/29
[#30214] move ruby_1_8_5 to SVN — Shugo Maeda <shugo@...>
前田です。
7 messages
2007/01/30
[#30220] schedule for Ruby 1.8.6 — "Akinori MUSHA" <knu@...>
ruby-core を読んでいない人もいると思うので、ここでもアナウンス
20 messages
2007/01/30
[#30239] Re: schedule for Ruby 1.8.6
— "Hiroyuki Iwatsuki" <don@...>
2007/02/01
岩月と申します。
[#30366] Re: schedule for Ruby 1.8.6
— Nobuyoshi Nakada <nobu@...>
2007/02/17
なかだです。
[#30370] Re: schedule for Ruby 1.8.6
— "Akinori MUSHA" <knu@...>
2007/02/17
At Sat, 17 Feb 2007 10:52:14 +0900,
[ruby-dev:30205] Re: YARV の thread について
From:
Hidetoshi NAGAI <nagai@...>
Date:
2007-01-29 07:40:56 UTC
List:
ruby-dev #30205
永井@知能.九工大です.
回答をありがとうございます.
From: SASADA Koichi <ko1@atdot.net>
Subject: [ruby-dev:30202] Re: YARV の thread について
Date: Mon, 29 Jan 2007 10:27:56 +0900
Message-ID: <45BD4033.6040208@atdot.net>
> 一応、model 3 については試作したものがあります。あとは外圧(やっぱり並
> 列に動かないとなぁ、とか)と皆のやる気(一人でやるにはちょっとつらい)や
> リソース(どっかの会社によって取り組むとか)によるかと思います。
>
> model 1 は、これも外圧(ネイティブスレッドうぜーよ! という声)による
> かと思います。こっちは現在も出来ていることから、もしかしたら少しがんばれ
> ば対応できるかも、というところです。
model 1 はこれまでの Ruby の thread とほぼ同じと
考えてよいのですよね?
コンパイル時に,指定された Thread model がどれであるかを
判定するマクロ定数は用意されますか?
できればスクリプトからも Thread model の確認ができた方が
嬉しいのですが...
# tcltklib の場合,model 1 であれば従来の戦略を取らねばならないし,
# model 2 or 3 であれば新しい戦略をとらねばならないもので.
> > * 組み込むライブラリ側で新たな native thread が作成された場合,
> > その native thread から Ruby を呼ぶことは可能ですか?
> > 不可能ではない場合,どのような処理を先に呼んでおく必要がありますか?
>
> 現状では不可能です。
>
> あんまり対策は考えていないんですが、そういう API を用意することは可能
> です。その際は、ちょっと面倒な制約が入るかもしれません。
>
>
> > * ライブラリ側で作成された native thread が並列動作をしようとする場合,
> > 注意すべきことはどのようなことでしょうか?
> > (Thread オブジェクトとしての管理外なので,Ruby 側のリソースに
> > 触れない限りは問題なしだとか,窓口 thread を一つ用意して
> > それを経由するようにしなければならないとか,
> > これこれに注意しないとおかしなことになるとか...)
>
> Ruby側リソースに触れない限りは大丈夫だと思います。たとえば、端的な例を
> 言うと、管轄外ネイティブスレッドのマシンスタックはGC対象ではありません。
> 窓口Rubyスレッドをひとつ用意するのが楽なのではないかなぁ、と思います。
そううまく片付いてくれればいいのですが (^_^;,
Tk 側からのコールバック処理の中でさらに Tk 側を呼び出すケースなどで
やっかいなことになりそうです.
Tk は特定の native thread でしか稼働しませんから
(でも Tcl パートは native thread の生成もできれば
並列実行も行われる可能性がある),
別の native thread から操作したい場合は
Tk の native thread の event queue に送り込んで待ちに入り,
処理結果を送り返してもらった後に復帰などとすることになると思います.
つまり,Tk の native thread の event loop の停止は厳禁です.
Tk の native thread 上でコールバック処理が実行され,
Ruby 側の処理を含めて一つの native thread 上で完結すればいいのですが,
もしコールバック処理に別 thread が関わって「待ち」の状態が
生じてしまうと固まってしまいます.
これまではバックアップとなる event loop を別 thread に作って
対処していたのですが,今回はこの手が使えないので
どうしようかなぁと...
> > その場合,ライブラリ側ではどの処理を呼べば良いのでしょうか?
> > yarvcore.h を include して YARV_CHECK_INTS() を呼ぶということに
> > なるのでしょうか?
>
> ライブラリ側で「スレッド切り替えを発生させるには」何を呼べばいいか、で
> すかね。rb_thread_schedule() を呼ぶと、とりあえず切り替えてくれます。
> が、ruby コードが走るタイミングで定期的に切り替え処理が走るので、あんま
> り必要はないかもしれません。ライブラリ側で長時間ブロックしてしまう際には
> 必要があるかもしれません。
Tk の event loop から他の thread への切り替えのために必要です.
# mode 3 では OS の native thread 切り替えに任せきるので
# コントロールの必要はない (できない) という認識でいいのですよね?
記憶違いでなければ,従来の CHECK_INTS() は
遅延処理されていた割り込み処理の実行も同時に行うものだったと思いますが,
YARV では rb_thread_schedule() の呼び出しだけで十分で,
割り込み処理の方は気にしなくても良いのでしょうか?
> 切り替えのコストは OS やシステムソフトウェアによります。つまり、ネイ
> ティブスレッド処理機構のスレッド切り替えの性能によります。経験的には、従
> 来のRubyのスレッド切り替えよりも随分と高速になっています。
>
> とくに、従来のRuby処理系はスタックのコピーが発生するため、スタックの深
> さに比例した切り替え時間が必要でしたが、YARVでは定数時間でスレッド切り替
> えを行うことが期待できます。
従来ほどには気にする必要はないけれども,Thread model 2 の場合は,
念のために調整パラメータは用意しておいた方が良いということのようですね.
--
永井 秀利 (九工大 知能情報)
nagai@ai.kyutech.ac.jp