- 824 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 15:57:19 ]
- >>822
以下の方法なら、これなら(フラグの)ビットは1個あれば済むよ。 実際にUNIXのデバイスドライバ(STREAMS)で実装した。 タスクキューを複数のサービススレッドが共有する。 割り込み処理ではタスクキューにイベントを入れてフラグを立てる。 複数のサービススレッドが一斉に起きて、最初にスケジュールされた スレッドだけがイベント取り出しに成功しフラグを落とす。 他のスレッドはタスクキュー空(から)なので、再び待ち状態に入る。 割禁の範囲はタスクキューとフラグを触る時だけ。 UNIXでハードなリアルタイム性は要求されないから、可能な手法だけどね。
|

|