[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[OSASK 3270] Re: ぐいぐいプログラミング質問



  こんばんは、川合です。


I.Tak. さんは 2002/02/20 20:10:08 の「[OSASK 3267] ぐいぐいプロ
グラミング質問」で書きました:

>ひさしぶりの質問です。

  なかなか充実の質問です。少し悩みました(笑)。

>1)要求していないシグナルを想定するべきか。
>[OSASK 2762]
>川合さん:
>>シグナル定義していないシグナルが
>>来ることだって原理的にはありえるくらいです。
> 今のところ要求外のシグナルが来るとハングアップするアプリも
>多いようですが(←送る奴)、これは想定した方がいいのでしょうか。
>杞憂っぽいとは思いますが。

  送ってみましたか。それはなかなかナイスなテストです(笑)。

  要求外のシグナルが来ないと決め付けるのは、かまいません。それは
アプリの仕様だと言い切ってしまえばいい訳です。

  OSASKのシェル側としては、ユーザーが無理矢理シグナルを送りたい
と主張したら、それには逆らいません。送ります。

  こういう風に考えてはいかがでしょう。アプリは石油ストーブです。
石油ストーブは、ガソリンを入れてはいけません。シェルは、ユーザー
があえてガソリンを入れたいと強く主張すれば、ガソリンを入れるのを
認めてしまいます(もちろん、事前に警告を出すとかはするかもしれま
せんが)。・・・もしガソリンを入れても爆発しないような安全装置付
きのストーブが作りたければ、そういうシグナルをはじくべきでしょう
。

  ちなみに僕のセンスでは、来ないと十分に想定できるシグナルについ
ては、チェックしないでしょう。ネットワークアプリとかじゃないんで
すし、わざわざ変な操作をする方が悪いと思います。きっと一度も分岐
しないif文が入るなんて、なんか虚しいです。

  ただし、ある時点で来るかもしれないシグナルは、いつ来てもおかし
くありません。たとえば、ウィンドウをまだオープンしていないのに、
キー入力シグナルが来るなどです。・・・まあ、でも、これも程度問題
です。想定しなくても責められないでしょう。

  なんというか、あらゆる事態を想定することよりも、どういう状況を
想定しているかを明確にしてある方が、好ましいと思います。もし想定
範囲が明確なら、将来シグナルフィルターを挟んでどんなシグナルでも
びくともしない実行も可能になるわけですし。

>2)rewindシグナルに他のシグナルが後続することは保証されるのか。
> WaitSignalから戻ってみるとrewindが来ただけだった、ということも
>想定しなければいけないのでしょうか。

  これは、うーん、保証してほしいですか?・・・保証してほしいみた
いですね。じゃあ、保証しますか。

>3)システム定義フォントロード完了シグナルを待つ間に他のシグナルが
>来ない事も(モジュールハンドル初期化と同様に)保証されるのか。

  保証されません。たとえば、タイマーなどがアクティブになっていれ
ば、タイマーシグナルが来るかもしれません。キー入力可能な状態なら
それらのシグナルも来るかもしれません。他のどんなシグナルも来ない
という状況なら、そう、無理に送らない限り、他のシグナルは来ないで
しょう。

>しなくていい。保証する。保証する。……と言われると非常に楽です(^^;

  ということで最後はちょっとうまくいきませんでした。

  なんというか、このテーマは、どういう仕様なのか、というよりは、
どうあるべきか、に近かったです(まだちゃんと決めていない範囲だっ
たので)。

  将来的に、OSASKアプリはシグナルリダイレクトによって、他のアプ
リからコントロールされるようになります。そのときに不都合が起きな
い程度なら、処理を省略してかまいません。

  何か意見がありましたら、是非提案してください。


  それでは。

--
    川合 秀実(KAWAI Hidemi)
川合堂社長 / OSASK計画総指揮 / カーネル開発班
E-mail:kawai !Atmark! imasy.org
Homepage http://www.imasy.org/~kawai/