アプリ版:「スタンプのみでお礼する」機能のリリースについて

μiTRONのイベントフラグ待ちで、
1つのイベントフラグを複数のタスクで同時に待っていた場合に
一番最初に動くタスクは、優先順位順でしょうか?
それとも、先に待機した順でしょうか?

A 回答 (1件)

uITRON4.0であれば、タスク優先度順かFIFO順(先に


待機した順)を選ぶことができます。選び方は、イベント
フラグの生成(CRE_FLGまたはcre_flg等)時に指定します。

uITRON3.0を含め、それ以前のuITRONでは優先度順は仕様
になかったと思いますが、実装独自に拡張されている場合
もあります。ですので、そのuITRONの仕様(uITRONの仕様と
違う部分がかかれた仕様書)を確認されるとよいと思います。

ただし、クリア属性を指定しない場合には、
カーネル過渡状態では、確かに優先度順で、
タスクはwait状態からready状態に遷移しますが、
タスクスケジューラが、優先度の高いタスクを
ディスパッチするため実質的には、優先度順
になるはずです。

もう少し解説しますと、
クリア属性を指定する場合は、先頭のタスクのみが
waitを解除しますが、クリア属性の指定がない場合は、
flagの成立するすべてのタスクがwaitを解除します。
したがって、解除されるタスクを含め優先度の高い
タスクが次にディスパッチされます。

さらに、同一優先順位のタスクについてどちらが先に
ディスパッチされるかについては、uITRONの仕様には
不定である旨記載されているので、どちらが先に
ディスパッチされる
かは、実装依存かと思われます。

参考URL:http://pc8.2ch.net/test/read.cgi/os/1077188504/2 …
    • good
    • 0
この回答へのお礼

ありがとうございました。
確かにご回答のとおりで、uITRON4.0ではTA_TFIFO/TA_TPRIの指定ができるようですね。
今使っているOSは3.0でタスク優先順位である旨の記載がありました。

お礼日時:2006/10/01 22:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!