[#4746] proxy example ? — Kikutani Makoto <kikutani@...>
きくたにです。
7 messages
1997/10/01
[#4750] ruby 1.0-971002 released — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
6 messages
1997/10/02
[#4754] Now,I am starting ruby. — mamoru@... (Mamoru Matushita)
先日、初めて投稿したつもりだったのですが間違えて
14 messages
1997/10/02
[#4774] change directory — Masaki Suketa <suke@...>
助田です。
5 messages
1997/10/03
[#4779] thread.html — Kikutani Makoto <kikutani@...>
日本語ref-manで、thread.htmlだけ(?)途中から英語になってて
5 messages
1997/10/03
[#4780] .deb distribution policy — Kikutani Makoto <kikutani@...>
きくたにです。
10 messages
1997/10/03
[#4788] Re: .deb distribution policy
— matz@... (Yukihiro Matsumoto)
1997/10/03
まつもと ゆきひろです
[#4790] Re: .deb distribution policy
— "Oliver M. Bolzer" <oliver@...>
1997/10/03
At 18:01 97/10/03 +0900, you wrote:
[#4807] cannot make ext/GD/GD.so on 1.0-971003 — Shoichi OZAWA <ozawa@...>
こんにちは 小澤@日立 です。
4 messages
1997/10/06
[#4840] Re^2: ruby 1.0-971003 — 青山 和光 <PXN11625@...>
わたなべさん、おはようございます。
7 messages
1997/10/07
[#4878] require in cgi script — ono@...
小野@SHARP%元F棟8階住人と申します。
6 messages
1997/10/09
[#4889] NeXT and ruby 1.0-971003 — HYOUDOU Kouichi /note <hyoudo@...>
兵藤です
15 messages
1997/10/10
[#4893] Re: NeXT and ruby 1.0-971003
— matz@... (Yukihiro Matsumoto)
1997/10/11
まつもと ゆきひろです
[#4894] iterator
— gotoken@... (GOTO Kentaro)
1997/10/11
ごとけんです
[#4891] mixin - singleton method inheritance, const etc... — shugo@... (Shugo Maeda)
前田です。
13 messages
1997/10/10
[#4910] Re^6: cgi-lib.rb — 青山 和光 <PXN11625@...>
まつもとさん、おはようございます。
8 messages
1997/10/12
[#4911] flock(mswin32) — Masaki Suketa <suke@...>
助田です。
7 messages
1997/10/12
[#4925] Re: argument list — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
5 messages
1997/10/13
[#4932] A start for English Docs — "Oliver M. Bolzer" <oliver@...>
Oliver@ドイツ学園です。
9 messages
1997/10/13
[#4958] さて、 ruby 使うか — Sinichiro Dezawa <dezawa@...>
出沢@富士フイルムです
11 messages
1997/10/14
[#4978] Re: さて、 ruby 使うか
— Mamoru Sato <ma-sato@...>
1997/10/14
さとうと申します。
[#5000] ruby 1.0-971015 released — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
14 messages
1997/10/15
[#5005] Re: ruby 1.0-971015 released
— WATANABE Hirofumi <watanabe@...>
1997/10/15
わたなべです.
[#5014] Re: ruby 1.0-971015 released — "EGUCHI Osamu" <eguchi@...>
えぐち です。
8 messages
1997/10/16
[#5017] Re: httpを使ってファイヤウォールをトンネルするプログラム — hisanori@...
松尾@ForUsです。こんにちは。
7 messages
1997/10/16
[#5050] ruby article of TRY! PC — Noritsugu Nakamura <nnakamur@...>
5 messages
1997/10/19
[#5056] RubyでOODB — hisanori@...
松尾です。
20 messages
1997/10/20
[#5057] Re: RubyでOODB
— matz@... (Yukihiro Matsumoto)
1997/10/20
まつもと ゆきひろです
[#5065] Re: RubyでOODB
— hisanori@...
1997/10/20
松尾です。
[#5066] Re: RubyでOODB
— matz@... (Yukihiro Matsumoto)
1997/10/20
まつもと ゆきひろです
[#5074] Re: Rubyで OODB
— keiju@... (石塚圭樹 )
1997/10/21
けいじゅ@日本ラショナルソフトウェアです.
[#5075] Re: Rubyで OODB
— matz@... (Yukihiro Matsumoto)
1997/10/21
まつもと ゆきひろです
[#5079] Re: RubyでOODB
— keiju@... (Keiju ISHITSUKA)
1997/10/21
けいじゅ@日本ラショナルソフトウェアです.
[#5078] ruby 1.0-971021 released — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
5 messages
1997/10/21
[#5086] Re^4: cgi-lib.rb — 青山 和光 <PXN11625@...>
まつもとさん、おはようございます。
6 messages
1997/10/22
[#5112] ruby & tk(wish) — tateishi@... (Tateishi Takaaki)
14 messages
1997/10/22
[#5113] Re: ruby & tk(wish)
— matz@... (Yukihiro Matsumoto)
1997/10/23
まつもと ゆきひろです
[#5120] Re: ruby & tk(wish)
— Yuji Shigehiro <sigehiro@...>
1997/10/23
重弘です.
[#5130] Re: ruby & tk(wish)
— matz@... (Yukihiro Matsumoto)
1997/10/24
まつもと ゆきひろです
[#5135] class method, instance method — HYOUDOU Kouichi /note <hyoudo@...>
兵藤です
12 messages
1997/10/26
[#5137] Re: class method, instance method
— matz@... (Yukihiro Matsumoto)
1997/10/27
まつもと ゆきひろです
[#5150] Re: class method, instance method
— HYOUDOU Kouichi /note <hyoudo@...>
1997/10/28
兵藤です
[#5151] Re: class method, instance method
— shugo@... (Shugo Maeda)
1997/10/28
前田です。
[#5142] listbox:curselection — KOYAMA Noriaki / 小山徳章 <noriaki.koyama@...>
小山@東芝と申します。
6 messages
1997/10/27
[#5157] Re: mail address class — Shin-ichiro Hara <sinara@...>
原です。
10 messages
1997/10/29
[#5168] Re^2: dbm & flock — 青山 和光 <PXN11625@...>
まつもとさん、こんにちは。
5 messages
1997/10/29
[#5171] SunOS 5.5 で install できない、、 — Sinichiro Dezawa <dezawa@...>
make test まで通ったんですが、make install で
10 messages
1997/10/29
[#5172] Re: SunOS 5.5 で install できない、、
— matz@... (Yukihiro Matsumoto)
1997/10/29
まつもと ゆきひろです
[ruby-list:5185] Re: listbox:curselection
From:
Yuji Shigehiro <sigehiro@...>
Date:
1997-10-30 12:31:08 UTC
List:
ruby-list #5185
しげひろです.
> Date: Tue, 28 Oct 97 10:11:48 +0900
> Subject: [ruby-list:5143] Re: listbox:curselection
> Message-Id: <199710280105.KAA28108@picachu.netlab.co.jp>
> ちなみに1.1b0ではtk.rbは重弘さんのtcltklibを使ったものになり
> ます.
うれしいです. 今の tcltklib の仕様のままだと, もっと嬉しいです (ruby
のバージョンアップの時に毎回, 手で ext/ にコピーしなくて済むので...)
> スクリプトの互換性は保たれますが,thread safeではなく
> なります.
良く知らないのですが, thread safe とはどういうことなのでしょう???
----
tcltk ライブラリ (tcltk.rb) や tcltklib ライブラリと thread を共存させ
る方法について, いろいろやってみました.
ruby の thread は, ruby インタプリタが task switch するのですが,
TclTk.mainloop や TclTkLib.mainloop (すなわち Tk_MainLoop (n))を馬鹿正
直に呼ぶと, それらは ruby インタプリタに制御を戻さないので, それ以降
task switch しなくなってしまいます.
以下のスクリプトは, tcl/tk により, print ボタン(標準出力に ---- を表示
する) と exit ボタンを生成しますが, 同時に, 別 thread (以下, 子 thread
と呼びます)で標準出力に * をひたすら書こうとします.
が, 実行してみると, TclTk.mainloop に制御がわたってボタンが表示された
後は, 子 thread が止まります. print ボタンを何度かクリックすると,
print "*" するときに ruby インタプリタに制御が戻るので, 時々 task
switch しますが, これでは使えません.
しかし, [1] の部分をコメントイン(?)すると, ちゃんと task switch するよ
うになります. 何をしているかというと, tcl/tk のタイマを使って, 0.1 秒
毎に, (ruby インタプリタに実行される)コールバックの中から Thread.pass
を呼んでいます.
ただし, (少なくとも FreeBSD では) 別 thread がバンバン実行されるので,
クリックの反応が凄く悪くなります. そこで [2] の部分をコメントインする
と, まともに反応するようになります. (本文は, 更に下に続く.)
---- ここから ----
#! /usr/local/bin/ruby
require "tcltk"
# * を表示し続けるスレッド
th1 = Thread.new {
while TRUE
print "*"; $stdout.flush
# Thread.pass # [2]
end
}
# おまじない
ip = TclTkInterpreter.new()
root = ip.rootwidget()
$after, button, destroy, pack =
ip.commands().indexes("after", "button", "destroy", "pack")
# ボタンの生成と表示
c1 = TclTkCallback.new(ip, proc{print "------\n"})
b1 = TclTkWidget.new(ip, root, button, "-text print -command", c1)
c2 = TclTkCallback.new(ip, proc{destroy.e(root)})
b2 = TclTkWidget.new(ip, root, button, "-text exit -command", c2)
pack.e(b1, b2)
#### [1] ここから
#$idlecallback = TclTkCallback.new(ip, proc{ idletask() })
#def idletask()
# Thread.pass
# $after.e("100", $idlecallback)
#end
#$after.e("100", $idlecallback)
#### [1] ここまで
TclTk.mainloop()
---- ここまで ----
で, いろいろやっているうちに, どうやら, 無理に TclTk.mainloop
(Tk_MainLoop (n)) を呼ぶ必要はなく, (tcl/tk の) update さえひたすら実
行して入れば良いのではないかと...
下のスクリプトは, [3] の部分で update し続けるのですが, ちゃんと動きま
す. (ただし, Tk_MainLoop と違って, root ウィジェットを destroy しても,
イベントループから抜けてくれません.)
これだと, 常に ruby インタプリタが制御を握っているので, tcl/tk のタイ
マを使って面倒なことをする必要はありません.
もし, tcl/tk の C ライブラリが再入可能(?)ならば, これは thread safe と
いって良いのでしょうか?
---- ここから ----
#! /usr/local/bin/ruby
require "tcltk"
# * を表示し続けるスレッド
th1 = Thread.new {
while TRUE
print "*"; $stdout.flush
Thread.pass
end
}
# おまじない
ip = TclTkInterpreter.new()
root = ip.rootwidget()
button, pack, update =
ip.commands().indexes("button", "pack", "update")
# ボタンの生成と表示
c1 = TclTkCallback.new(ip, proc{print "------\n"})
b1 = TclTkWidget.new(ip, root, button, "-text print -command", c1)
c2 = TclTkCallback.new(ip, proc{exit})
b2 = TclTkWidget.new(ip, root, button, "-text exit -command", c2)
pack.e(b1, b2)
#### [3] ここから
while TRUE
update.e()
Thread.pass
end
#### [3] ここまで
---- ここまで ----
(次回の tcltk.rb の公開時には, このあたりの仕組みをなんとかしなければ...)
----
重弘裕二
阪大情報処理教育センター (sigehiro@rd.ecip.osaka-u.ac.jp)
阪大工情報システム白川研 (sigehiro@ise.eng.osaka-u.ac.jp)