From: Hidetoshi NAGAI Date: 2007-01-29T00:20:34+09:00 Subject: [ruby-dev:30199] YARV の thread について 永井@知能.九工大です. Ruby/Tk の YARV 対応ですが,tcltklib.c における Tcl/Tk wrapper の 根本の戦略からして作り直さねばならないようです. で,どのようにすべきか判断する上で,YARV での thread について 少し確認と質問をさせていただきたいと思います. ----------------------------------------------------------------------- * 現在の YARV は Thread model 2 であり,ある時点で稼働状態にある thread は一つだけということですよね? * 上記が正しいとして,将来,Thread model 1 や 3 が作り込まれることは どの程度想定しておけば良いでしょうか? (「比較的近い将来に」とか,「当面は予定がない」とか...) * 現在の YARV ではすべての thread が必ず一つの native thread に 対応するということでよろしいでしょうか? * 組み込むライブラリ側で新たな native thread が作成された場合, その native thread から Ruby を呼ぶことは可能ですか? 不可能ではない場合,どのような処理を先に呼んでおく必要がありますか? * ライブラリ側で作成された native thread が並列動作をしようとする場合, 注意すべきことはどのようなことでしょうか? (Thread オブジェクトとしての管理外なので,Ruby 側のリソースに 触れない限りは問題なしだとか,窓口 thread を一つ用意して それを経由するようにしなければならないとか, これこれに注意しないとおかしなことになるとか...) * Thread model 2 の場合,thread 切り替えのタイミングコントロールは, これまでと同様,ある一定の処理 (YARV_CHECK_INTS()?) が呼ばれた際に 切り替わるという考え方でよいのでしょうか? その場合,ライブラリ側ではどの処理を呼べば良いのでしょうか? yarvcore.h を include して YARV_CHECK_INTS() を呼ぶということに なるのでしょうか? * 従来の thread は切り替えのコストがかなり大きかったわけですが, YARV ではどの程度でしょうか? 例えば,Tk の処理待ちイベントが存在しなければ常に即座に thread を 切り替えても問題ないか,それとも切り替えが頻繁だと困るので 少しの間イベント待ちを試みてから切り替えるようにすべきかなどです. ----------------------------------------------------------------------- 「質問の仕方が悪くて意味がわからない」という場合はお尋ね下さい. まとまりがなくて申し訳ありませんが,よろしくお願い致します. -- 永井 秀利 (九工大 知能情報) nagai@ai.kyutech.ac.jp