From: matz@... (Yukihiro Matsumoto) Date: 2003-07-15T13:48:12+09:00 Subject: [ruby-dev:20676] Re: frozen ThreadGroup まつもと ゆきひろです In message "[ruby-dev:20673] Re: frozen ThreadGroup" on 03/07/15, Hidetoshi NAGAI writes: |> というように条件によってfreezeされているのに新たなthreadが追 |> 加されるというのはなじまないかもしれません。 | |そうですねぇ... |「ThreadGroup::Default をいきなり freeze させてしまったら」 |といったケースも考えて,同一スレッドグループ内での |サブスレッド生成までは許容せざるを得ないだろうと思っていました. |しかし,確かに「ThreadGroup オブジェクトの内部状態が変化してしまう」 |ということ自体が freeze となじまないと感じることはわかります. ですよね。 |# ただ,ThreadGroup オブジェクトを freeze しても |# スレッド追加自由という現状は,さらになじんでいないとは思います. ですよね。ただ、これは私が気づいていなかっただけですから。 さっそく修正します。 |考えてみると,ThreadGroup の freeze(?) 関連の状態には |次の三つが設定できます. | | (1) ThreadGroup オブジェクトへの特異メソッド追加等の修正を許さない | (2) ThreadGroup オブジェクトから/へのスレッド追加/削除を許さない | (3) ThreadGroup オブジェクトの登録スレッド変更を許さない | |現状の freeze は (1),前回の patch は (1) + (2) で, |本来の意味での freeze は (1) + (3) です. |(3) は厳しすぎと思ってましたが,新規スレッドの生成禁止と考えれば |需要はあるのかもしれません. |とはいえ,全く制約なしか (1) + (3) かの二択というのは |落差が大きすぎのようです. (1)と(2)は本来独立ですよね。 |「では」というわけで, | | (1) + (2) ===> enclose / enclosed? | (1) + (3) ===> freeze / frozen? | |というのはいかがでしょうか. |現在考えている方法での safeTk の実装上は, |enclose / enclosed? が可能なら十分です. (1)+(3) -> freeze (2) -> enclose でどうでしょう? |こんなことをやりながらも,実は誰かがもっといいアイディアを |出してくれるのを待っています. | |# こんな風にもがいてたら,誰か助け船を出してくれないかなぁと.(^_^) だといいんですけど。以前もこうやって放置されてるのがあります しねえ。 まつもと ゆきひろ /:|)