[#26664] refactoring tcltklib.c (deleted ip check) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
永井@知能.九工大です.
山本です。
永井@知能.九工大です.
山本です。
永井@知能.九工大です.
山本です。
永井@知能.九工大です.
山本です。
山本です。
永井@知能.九工大です.
山本です。
永井@知能.九工大です.
[#26711] --with-static-linked-extするとrequireできないライブラリがある — IWATSUKI Hiroyuki <don@...>
岩月と申します。
なかだです。
[#26721] TkVariable.new_hash 経由だと trace が発生しない — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
[#26723] Fixnum演算メソッド中のcoerceの削減 — Tadashi Saito <shiba@...2.accsnet.ne.jp>
斎藤と申します。
[#26743] zsuper in a method with optional arg — "NAKAMURA, Hiroshi" <nakahiro@...>
-----BEGIN PGP SIGNED MESSAGE-----
まつもと ゆきひろです
-----BEGIN PGP SIGNED MESSAGE-----
[#26745] TkCheckbutton#variable as getter? — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
永井@知能.九工大です.
山本です。
永井@知能.九工大です.
永井@知能.九工大です.
山本です。
永井@知能.九工大です.
[#26753] some questions about tcltklib.c — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
永井@知能.九工大です.
山本です。
[#26764] multi-thread and logger — Nobuhiro IMAI <nov@...>
いまいです。
[#26791] Failure: test_block_passing(TestIterator) — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
まつもと ゆきひろです
[#26800] reducing PUSH_TAG in rescue, and useless exceptions — nobu@...
なかだです。
[#26808] test/nkf/test_kconv.rb — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
[#26817] test/socket/test_tcp.rb freeze on windows — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
こんにちは、なかむら(う)です。
山本です。
山本です。
こんにちは、なかむら(う)です。
山本です。
こんにちは、なかむら(う)です。
山本です。返信が遅れてすみません。
[#26829] cannot check EOF of pipe on windows — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
山本です。
こんにちは、なかむら(う)です。
山本です。
なかだです。
山本です。
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
山本です。
[#26840] [BUG] oniguruma + utf-8 — "NAKAMURA, Hiroshi" <nakahiro@...>
-----BEGIN PGP SIGNED MESSAGE-----
[#26851] ripper for 1.8 — Tanaka Akira <akr@...17n.org>
ruby-1.8 で動かす gonzui で、ruby code の解析をしたいという要望があっ
[#26872] irb -I/ruby -Iと$LOAD_PATH — akira yamada / やまだあきら <akira@...>
Debianユーザからruby -Iとirb -Iで
なかだです。
nobuyoshi nakada wrote:
けいじゅ@いしつかです.
けいじゅ@いしつかです.
なかだです。
けいじゅ@いしつかです.
まつもと ゆきひろです
けいじゅ@いしつかです.
[#26883] top level include on load(filename, true) — Shugo Maeda <shugo@...>
前田です。
[#26897] fail on make install — KIMURA Koichi <kimura.koichi@...>
木村です。
こんにちは、なかむら(う)です。
木村です。
木村です。
木村です。
こんにちは、なかむら(う)です。
木村です。
こんにちは、なかむら(う)です。
なかだです。
山本です。
なかだです。
なかだです。
山本です。
こんにちは、なかむら(う)です。
なかだです。
まつもと ゆきひろです
山本です。
なかだです。
[#26900] multiplying empty string — nobuyoshi nakada <nobuyoshi.nakada@...>
まつもと ゆきひろです
In article <1125327516.070646.12845.nullmailer@x31.priv.netlab.jp>,
まつもと ゆきひろです
In article <1125356798.802509.8788.nullmailer@x31.priv.netlab.jp>,
まつもと ゆきひろです
In article <1125369966.174424.13781.nullmailer@x31.priv.netlab.jp>,
[ruby-dev:26733] Re: [ruby-cvs] ruby/ext/socket, ruby, ruby: * ext/socket/socket.c (ruby_connect): break immediately if a
In article <1123025557.870442.14225.nullmailer@x31.priv.netlab.jp>,
Yukihiro Matsumoto <matz@ruby-lang.org> writes:
> |なお、蛇足ですが、Ruby の read でも nonblocking なときにはイベントルー
> |プに戻る前にまず read するようにすれば、マルチスレッドでも
> |Linux 2.6 の /proc/loadavg を (nonblocking にすれば) 読めるようになっ
> |ていいんじゃないかと思います。
>
> これは毎回rb_thread_wait_fd()の中でfcntl(fd, F_GETFL, 0)して
> チェックするということですかね。コストが問題でなければ
> nonblockingであればすぐ返るだけなのですが。
read は EAGAIN で繰り返し呼ばれるますが、select しないでいいのは最初の
read だけです。従って、READ_CHECK が適切なんじゃないかと思っています。
rb_thread_wait_fd でそうすると、errno が EAGAIN のときに
rb_io_wait_readable が即座に return するようになります。そうすると、
retry:
TRAP_BEG;
r = read(fptr->fd, fptr->rbuf, fptr->rbuf_capa);
TRAP_END;
if (r < 0) {
if (rb_io_wait_readable(fptr->fd))
goto retry;
rb_sys_fail(fptr->path);
}
のようなコードが busy wait になります。つまり、EAGAIN を受け取った後に
は nonblocking だろうが (というか、nonblocking だからこそ) select で待
たなければいけません。
そういえば、失敗すると busy wait になりがちで迷惑だ、というのも
nonblocking な挙動を普通のメソッドにとらせたくない理由のひとつですね。
数多くある nonblocking がまきちらす不幸のひとつというか。
あと、コストは迷うところです。毎回やるかフラグを保持するかですが、
nonblocking かどうかというのは他のプロセスと共有されるかもしれないとい
うのが問題です。不用意に read してプロセス全体がブロックするのは危険だか
らせめて read 直前に読んで critical section を短くしようと考えるか、ど
うせ毎回読んでも race condition は残るからフラグにすると考えるか、悩み
どころです。
あと、今気がついたんですが、/proc/loadavg は普通のファイル (S_ISREG が
真になるファイル) なんですね。
% ruby -e 'open("/proc/loadavg") {|f| p f.stat.file?}'
true
とすると、nonblocking かどうかではなく、普通のファイルだったら select
しないという判断もできますね。普通のファイルは select すると常に
readable になると決まっているので。nonblocking と違ってこっちは変化し
ないので、こっちをフラグで保持するのがいいのかなぁ。
まぁ、/proc みたいに怪しげなものに対してどこまでその性質が期待できるか
は謎で、select を使って read のブロックを防げる例が発見されることもあ
りえなくはないと思いますが。
--
[田中 哲][たなか あきら][Tanaka Akira]