[#41772] [Feature #3513] spawn ..., err: nil — Shyouhei Urabe <redmine@...>
Feature #3513: spawn ..., err: nil
10 messages
2010/07/01
[#41773] Re: [Feature #3513] spawn ..., err: nil
— Tanaka Akira <akr@...>
2010/07/01
2010年7月1日19:09 Shyouhei Urabe <redmine@ruby-lang.org>:
[#41780] Re: [Feature #3513] spawn ..., err: nil
— Urabe Shyouhei <shyouhei@...>
2010/07/02
卜部です。
[#41774] 動的ローディングの仕様について — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
7 messages
2010/07/01
[#41778] [Bug #3515] FreeBSD wrongly raises ECONNRESET on close(2) — Yui NARUSE <redmine@...>
Bug #3515: FreeBSD wrongly raises ECONNRESET on close(2)
12 messages
2010/07/02
[#41826] Re: [Bug #3515] FreeBSD wrongly raises ECONNRESET on close(2)
— Tanaka Akira <akr@...>
2010/07/06
2010年7月2日12:20 Yui NARUSE <redmine@ruby-lang.org>:
[#41828] Re: [Bug #3515] FreeBSD wrongly raises ECONNRESET on close(2)
— Takahiro Kambe <taca@...>
2010/07/06
In message <AANLkTimD2geIuuhr0GQZ4fprYTv3m4kuESajvsrxaItm@mail.gmail.com>
[#41782] [Bug #3522] String::size return invalid size on mswin64 — shintaro kuwamoto <redmine@...>
Bug #3522: String::size return invalid size on mswin64
5 messages
2010/07/02
[#41800] Tempfile#size returns 0 under windows — take_tk <ggb03124@...>
たけ(tk)です。
6 messages
2010/07/03
[#41833] [bug:trunk] GNU/Linux select hang on a socket which TCP state is CLOSED — Tanaka Akira <akr@...>
GNU/Linux で、以下のプログラムがハングします。
7 messages
2010/07/06
[#41834] Re: [bug:trunk] GNU/Linux select hang on a socket which TCP state is CLOSED
— Yukihiro Matsumoto <matz@...>
2010/07/06
まつもと ゆきひろです
[#41835] Re: [bug:trunk] GNU/Linux select hang on a socket which TCP state is CLOSED
— KOSAKI Motohiro <kosaki.motohiro@...>
2010/07/06
kosakiです
[#41856] [Bug #3579] RHEL5のautoconf-2.59だとruby-1.8.7-p299でautoconfが失敗する — Motohiro KOSAKI <redmine@...>
Bug #3579: RHEL5のautoconf-2.59だとruby-1.8.7-p299でautoconfが失敗する
5 messages
2010/07/16
[#41858] Re: [Bug #3579] RHEL5のautoconf-2.59だとruby-1.8.7-p299でautoconfが失敗する
— Nobuyoshi Nakada <nobu@...>
2010/07/17
なかだです。
[#41862] [bug:trunk] rb_data_type_t should be extensible — Nobuyoshi Nakada <nobu@...>
なかだです。
5 messages
2010/07/17
[#41876] redmine.ruby-lang.orgが落ちてる? — kimura wataru <kimuraw@...>
木村(わ)といいます。
4 messages
2010/07/25
[#41883] failed to build ext/tk of ruby-1.9.2-rc2 on Mac OS X — Yutaka Hara <yutaka.hara@...>
yharaです。
6 messages
2010/07/28
[#41884] Re: failed to build ext/tk of ruby-1.9.2-rc2 on Mac OS X
— Hidetoshi NAGAI <nagai@...>
2010/07/28
永井@知能.九工大です.
[#41892] [Feature #3627] catchのブロックを再実行するメソッド — Makoto Kishimoto <redmine@...>
Feature #3627: catchのブロックを再実行するメソッド
6 messages
2010/07/29
[#41893] thread.bind(sym, val) { ... } — Tanaka Akira <akr@...>
スレッド変数を一時的に設定するメソッドを加えるのはどうでしょうか。
7 messages
2010/07/29
[ruby-dev:41885] [1.9] Queueのfairness
From:
"NAKAMURA, Hiroshi" <nakahiro@...>
Date:
2010-07-28 11:03:51 UTC
List:
ruby-dev #41885
Queueのfairnessは必要でしょうか。
ここで"fairness"で意図しているのは、Queue#popで複数のスレッドが待ってい
る場合に、一番長く待っているスレッドから順に制御を渡されること、です。
この意味では、1.8のQueueはfairで、例えば以下のスクリプトを走らせると、
常に[:go, :first]と表示されます。
# http://gist.github.com/493930#file_gistfile1.rb
create_waiter = lambda { |name, command|
t = Thread.new {
p [command.pop, name]
}
Thread.pass until t.status == 'sleep'
t
}
50.times do
command = Queue.new
# create 3 waiters, and...
create_waiter.call(:first, command)
create_waiter.call(:second, command)
create_waiter.call(:third, command)
# and pushes a command.
command.push(:go)
# then try to consume the command by a subsequent thread
Thread.new {
p [command.pop, :LATER]
}
end
これに対し1.9では、Queueがfairではなくなったため、時々[:go, :LATER]など
と表示されます。
正直なところ、RubyではprimitiveのMutex#lockがfairではない(間違っていた
ら指摘をお願いします)ことから、Queueだけがんばってもね、という気はしま
す。しかし1.9のQueueも、結構惜しいところまでfairなので、うまい解決法があ
れば。。。誰か思いつきませんか。
とりあえず1.8のQueueをスレッドスケジューラもどきに使っている人は、もし
ハマったらfairnessを疑ってみるとよいかもしれません。私の典型的な使い方
は、以下でした。
# http://gist.github.com/430066
require 'thread'
q = Queue.new
t1 = Thread.new {
p [:t1, q.pop]
q.push(:t1)
}
q.push(:main)
p [:main, q.pop]
ちなみにJRubyもunfair(1.8も)なんですが、1.9とは異なり、「main threadだ
けは割り込みできる」という状態になっています。最初のサンプルは問題なく
動きますが、最後のヤツはダメ。ちなみに実装はfastthread作者の@mentalguy。