[#17002] strict prototype for c++ — Takaaki Tateishi <ttate@...>
立石です.
At Fri, 3 May 2002 02:59:36 +0900,
[#17017] 標準添付案 — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
At Wed, 8 May 2002 19:50:17 +0900,
At Wed, 8 May 2002 22:45:06 +0900,
At Thu, 9 May 2002 00:47:46 +0900,
田中です。一応 blade は見てます。
堀之内です。
堀之内です。
At Tue, 14 May 2002 14:45:28 +0900,
[#17031] double acosh — WATANABE Hirofumi <eban@...>
わたなべです。
なかだです。
わたなべです。
まつもと ゆきひろです
わたなべです。
[#17037] here document2 つで __LINE__ がずれる — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
[#17053] socket in Win32 — nobu.nakada@...
なかだです。
[#17059] [PATCH] mswin32 configure — nobu.nakada@...
なかだです。
[#17060] rb_warn — Tadayoshi Funaba <tadf@...>
ふなばです。
[#17095] irb & jarh — Tanaka Akira <akr@...17n.org>
ふと、irb で jarh をいくつか試したのですが、うまく扱えないものがあるようです。
けいじゅ@日本ラショナルソフトウェアです.
In article <200205160811.RAA31441@ishitsuka.com>,
[#17112] [Cleanup] rb_thread_select() — nobu.nakada@...
なかだです。
[#17122] Array#bsearch — Beyond <beyond@...>
[#17128] Thread: deadlock trouble — nagai@...
永井@知能.九工大です.
At Fri, 17 May 2002 14:47:53 +0900,
[#17134] argv[0] — Tanaka Akira <akr@...17n.org>
ふと ruby インタプリタの C における argv[0] を知りたくなったんですが、
まつもと ゆきひろです
In article <1021723554.017958.5113.nullmailer@picachu.netlab.jp>,
In article <1021723554.017958.5113.nullmailer@picachu.netlab.jp>,
[#17144] Re: msvcrt — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
わたなべです。
こんにちは、なかむら(う)です。
わたなべです。
こんにちは、なかむら(う)です。
わたなべです。
こんにちは、なかむら(う)です。
こんにちは、なかむら(う)です。
なかだです。
[#17158] else without rescue — nobu.nakada@...
なかだです。
[#17179] コマンドラインオプションの順序制約 — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
なかだです。
[#17194] [RCR] Array#rotate{,!} — nobu.nakada@...
なかだです。
まつもと ゆきひろです
[#17208] Etc — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
[#17223] race condition on Queue#pop? — Tanaka Akira <akr@...17n.org>
なんとなく thread.rb を眺めていて、Queue#pop に race condition がある
なかだです。
まつもと ゆきひろです
なかだです。
[#17228] Re: [ruby-list:35305] Re: ((1.2)..(3.4)).to_a — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
たけ(tk)です。
まつもと ゆきひろです
たけ(tk)です。
まつもと ゆきひろです
あづみです。
[#17238] Re: [ruby-list:35304] Re: ((1.2)..(3.4)).to_a — siena@... (Siena.)
Siena. です。
[ruby-dev:17220] safe-level
永井@知能.九工大です.
Tk の件で苦戦中に気付いたのですが,
safe-level って,proc 中でも閉じてるように見えるのですが,
これは正しいでしょうか?
もしそうなら,safe_block なんてメソッドがあると嬉しいかもしれません.
こんな感じです.
------------------------------
def safe_block(safe)
proc{$SAFE=safe;yield}.call
end
p $SAFE #=> 0
s = 'aaa'
p safe_block(2){p $SAFE; s += 'bbb'; 'ret'} #=> 2 & "ret"
p s #=> "aaabbb"
p $SAFE #=> 0
------------------------------
safe-level が proc の中で閉じているのが仕様であるなら,
例の Tk での問題のを解決することができます.
問題は,「Tk の callback 中で,ある特定の safe-level で
処理を行った後にその結果を使って処理を継続したい」という状況です.
safe-level の wrap には Thread を使わねばならないとすると,
これを行うには Thread.new{}.value としなければなりません.(ですよね?)
ところが Tk の callback の場合,ここで待ち状態になるのは
Tk のイベントループです.
そのため,その thread の中で Tk を呼ぶと,
それを処理すべきイベントループは停止中ですので deadlock に陥ります.
また,これを予備のイベントループの起動によって回避しようとすると,
その予備イベントループの safe-level での実行になりますから,
余計なイベントまで間違えて処理しないようにしなければなりません.
それに,起動された thread 中で Tk を呼び出さないのであれば,
イベントループが deadlock に陥ることはありませんから,
その場合は予備のイベントループの起動は無意味です.
上記のような proc の使い方が許されれば,
イベントループがそのまま処理を行うことができ,
この件についての deadlock 問題を回避できます.
で,そうであるなら callback 中で起動する thread を
join/value する必要はなくなるはずですから,
「Tk の callback 中で起動する thread への join/value は禁止」
としてしまっても実用上の問題はないだろうと考えます.
詳細にはもう少し検討しないといけないですが,
これが OK なら問題は解決と言えそうに思います.
--
永井 秀利 (九工大 知能情報)
nagai@ai.kyutech.ac.jp