[#20083] non-block IO with TCPSocket — dn <daisuke@...>

初投稿の中村と申します。よろしくお願いします。

19 messages 2000/01/06
[#20084] Re: non-block IO with TCPSocket — Tomoyuki Kosimizu <greentea@...2.so-net.ne.jp> 2000/01/06

越水です。

[#20091] Re: non-block IO with TCPSocket — とみたまさひろ <tommy@...> 2000/01/06

とみたです。

[#20133] おききしたーいでーす — akimaru <akimaru@...>

17 messages 2000/01/09
[#20138] Re: おききしたーいでーす — akimaru <akimaru@...> 2000/01/09

[#20237] Ruby/Tk multi interpreter — nagai@...

永井@知能.九工大です.

21 messages 2000/01/17
[#20242] Re: Ruby/Tk multi interpreter — nagai@... 2000/01/17

永井@知能.九工大です.

[#20248] Re: Ruby/Tk multi interpreter — Hideto ISHIBASHI <s34204@...> 2000/01/17

石橋秀仁です。

[#20254] Re: Ruby/Tk multi interpreter — nagai@... 2000/01/18

永井@知能.九工大です.

[#20271] Re: Ruby/Tk multi interpreter — Hideto ISHIBASHI <s34204@...> 2000/01/18

石橋秀仁です。

[#20249] FTP.open err for Windows95 — "Y Kataoka" <kataoka@...>

初めまして、片岡@KLUGと申します。

18 messages 2000/01/17
[#20252] Re: FTP.open err for Windows95 — "NAKAMURA, Hiroshi" <nakahiro@...> 2000/01/18

なひです.

[#20342] How to build ruby(current) with cygwin — KORIYAMA Naohiro <kory@...2.so-net.ne.jp>

はじめまして、こおりやまです。

19 messages 2000/01/23
[#20362] Re: How to build ruby(current) with cygwin — WATANABE Hirofumi <Hirofumi.Watanabe@...> 2000/01/24

わたなべです.

[#20422] Re: How to build ruby(current) with cygwin — Masaki Suketa<CQN02273@...> 2000/01/29

Win32OLE の作者の助田です.

[#20394] ruby-1.4.3 port to HPUX 11.00 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

15 messages 2000/01/26

[ruby-list:20282] Re: Ruby/Tk multi interpreter

From: nagai@...
Date: 2000-01-19 08:35:16 UTC
List: ruby-list #20282
永井@知能.九工大です.

From: matz@netlab.co.jp (Yukihiro Matsumoto)
Subject: [ruby-list:20276] Re: Ruby/Tk multi interpreter
Date: Wed, 19 Jan 2000 14:24:45 +0900
Message-ID: <E12Anbn-0000B9-00@ev.netlab.co.jp>
matz> Tclがスレッドと相性が悪いため(ローカル変数のアドレスを構造体
matz> に含めるなどというワザを使うんだもの)Tclのイベント処理などを
matz> 一手に引き受けるスレッドがポーリングのようなことをしているた
matz> めです。改善の余地はあるかもしれません。

Tcl/Tk の動作を完全に把握しているわけではないので確信は持てないんですが,
Tcl/Tk の動作って,
--------------------------------------------------------
・イベントが発生した時,
  イベント queue が空なら即実行.
  イベント queue に処理待ちのイベントが存在するなら
     新しいイベントを適当な待ち順に追加.

・( Tk_MainLoop() の処理 )
  root widget が存在する限り,Tcl_DoOneEvent を繰り返す.

・(Tcl_DoOneEvent() の処理 )
  イベント queue に処理待ちのイベントが存在するなら,そこから一つを実行
  存在しなければ,アイドル時に行うべき処理を実行
--------------------------------------------------------
ですよね?

現在は,Tk.mainloop などでは単に Tk_MainLoop を実行しているだけなんで,
代りに,スレッド切替えのタイミングなどに合わせつつ
Tcl_DoOneEvent() を適当に呼び出すようにすれば改善できるのかもしれません.

で,Tk.mainloop の停止なんですが,
Tcl_DoOneEvent() の呼び出しを完全に止めてしまうと
アイドル処理すら行われなくなるため,再描画が行われなくなります.
つまり,一旦後ろに隠れた window が再度表に出てきても,
隠れていた部分の描画がなされることがないということになります.
# ですよね? 今一つ自身がない (^_^;
問題はこれを是とするかどうかです.
Tcl_DoOneEvent() の呼び出しタイミングを Ruby 制御下に置き,
Tk.mainloop の停止時はアイドル処理以外の処理が行われないように
イベントをマスクするというのが自然に見える対応なのかもしれません.
-- 
                                         永井 秀利 (九工大 知能情報)
                                             nagai@ai.kyutech.ac.jp

In This Thread