小柳です。こんばんは。 Hidemi KAWAI wrote: > > こんにちは、川合です。ご意見ありがとうございます。 > > KOYANAGI, Masaaki さんは 2002/09/16 23:02:21 の「[OSASK 5003] Re > : シグナル(ぐいぐい01).」で書きました: > > そのとおりですが、これはこれで良いのです。発生順序が重要なこと > はままありますので勝手に入れ替えるわけにはいきません。もしそうい > う事態が起りうるようなアプリなら、シグナルボックスから読み取った > シグナルを分類してキューに貯めて、それから処理すればいいと思いま > す。 私が想定している状況は、順序を無視してでも最優先に通知したいという場合 です。VRAM アクセス禁止や再描画要求のシグナルを他のシグナルよりも優先 するような感じです。 複数ではなく、「通常」と通常シグナルに割り込める「特別」の 2種類のみ をシステムでサポートすべきではないかと思いました。 優先レベルが複数ある場合はアプリ側で自前で振り分けでいいと思います。 ところでシェルがシグナルをアプリに送る場合に、このように他のシグナル に割り込んで優先してアプリに通知することはできるのでしょうか? > >(1)global level が最も高いシグナルが signal box に存在している場合に、 > >lib_waitsignal()では、その global level のシグナルが返される。 > >つまり、global level の高いシグナルは global level の低いシグナル > >よりも常に優先され、割り込むことができる。 > > これについてですが、似たような仕組みは複数のシグナルボックスを > サポートすることで対応できます。つまり優先度の高いシグナルはシグ > ナルボックス1に入れて優先度が低ければシグナルボックス2に入れると > か、そんな感じです。それでシグナルボックス1を見てからシグナルボ > ックス2を見ればいいわけです。 元の[OSASK 4982]ではシグナルボックスの数には触れていなかったので、 1つのままでいくと思っていました。複数にした場合のことは私も考えて いたので、この説明は良く分かります。 > だからシグナルボックスを複数にしようかどうかを検討しているんで > すが、うーん、微妙なのです。結局シグナルボックスが複数なければい > けないような複雑な処理をする場合、アプリ側でキューを構成する方が > 自由度が高く、だったらシグナルボックスは一つにしておくほうがシス > テムは簡単ですしアプリにも好都合です。 マルチスレッドがサポートされると複数のシグナルボックスがサポート されていると便利ではないでしょうか。マウスシグナル専用のシグナル ボックスを用意して 1つのスレッドでそのシグナルボックスを監視する というような使い方をしたくなると思います。 inner-level は川合さんが言った通り、キューを使えば問題ない と思います。 それでは。 -- 小柳 雅明(http://homepage1.nifty.com/dreaming/) 「人の足を止めるのは"絶望"ではなく"諦観" 人の足を進めるのは"希望"ではなく"意志"」 -- ARMS