[#30549] [ANN] Ruby 1.8.6 has been released — "Akinori MUSHA" <knu@...>

 Ruby 1.8.6 をリリースしました。

14 messages 2007/03/12

[#30553] help: lib/shell for ruby 1.9 — keiju@... (Keiju ISHITSUKA)

けいじゅ@いしつかです.

13 messages 2007/03/13
[#30585] Re: help: lib/shell for ruby 1.9 — Yukihiro Matsumoto <matz@...> 2007/03/15

まつもと ゆきひろです

[#30587] Re: help: lib/shell for ruby 1.9 — keiju@... (石塚圭樹) 2007/03/15

けいじゅ@いしつかです.

[#30588] Re: help: lib/shell for ruby 1.9 — Yukihiro Matsumoto <matz@...> 2007/03/15

まつもと ゆきひろです

[ruby-dev:30585] Re: help: lib/shell for ruby 1.9

From: Yukihiro Matsumoto <matz@...>
Date: 2007-03-15 03:10:36 UTC
List: ruby-dev #30585
まつもと ゆきひろです

In message "Re: [ruby-dev:30553] help: lib/shell for ruby 1.9"
    on Tue, 13 Mar 2007 19:41:13 +0900, keiju@ishitsuka.com (Keiju ISHITSUKA) writes:

|こんどは, lib/shell を ruby 1.9(YARV)に対応しようと思っているのですが,
|Thread.criticalを多用しているので, どうしたもんだかと悩んでします.

確かに。

|まず, lib/shell では, カレントディレクトリ を Shellオブジェクトごとに
|持てるようにしています. で以下のように Thread.critical を用いて他のス
|レッドが他のスレッドがカレントディレクトリを変更しないようにしています.

えーと、まず第一にThread.criticalを使えばコンテキストスイッ
チが起きないと言うのは誤解です。Thread.criticalはタイマーに
よる切り替えを禁止するだけで、どこかで明示的なスレッド切り
替えが発生することを止められません。ということは、最初のコー
ドはもともと期待するほどには安全では無かったということなのだ
と思います。

なお、chdirに関してはDir.chdirをブロック付きで呼ぶという技が
使えると思います。

  Dir.chdir(@shell.cwd) do
    @files = Dir[patter]
  end

残念ながらumaskには同様の手段が用意されていません。そもそも
プロセス単位の概念をスレッド単位に見せかける時点で相当無理が
あるわけですが。

|それともう一つ, forkした後の子プロセス側のスレッドはどうするようになり
|ましたっけ? だいぶ前の版からkillするようになった気もしているのですが?

1.8ではforkした以外のスレッドは全部死にます(でもOSXでは動か
ないとか [ruby-dev:30581])。trunkでどうなのかはちょっと今は
分かりません。

In This Thread