OS_SendMessage

構文

#include <iris/os.h>
BOOL OS_SendMessage(
     OSMessageQueue*   mq,
     OSMessage         msg,
     s32               flags );
  

引数

mq メッセージキューへのポインタ
msg 送信するメッセージ
flagsk OS_MESSAGE_BLOCKを設定した場合、OS_SendMessage関数は、キューが一杯の時ブロックします。 OS_MESSAGE_NOBLOCKを設定した場合、OS_SendMessage関数は、キューが一杯であろうとなかろうと、 すぐに返ります。

返り値

メッセージがうまく送られた場合、TRUEを返します。
OS_MESSAGE_NOBLOCK が指定され、キューが一杯であった場合、FALSE を返します。

説明

指定したメッセージキューの末尾にメッセージを挿入します。 また、このメッセージキューで待ち状態のスレッドを実行可能状態にします。 受信スレッドは、優先順位の順に実行されます。

flagsOS_MESSAGE_BLOCKを設定した場合、キューが一杯 (full) であれば、この関数を呼び出したスレッドを一時停止します。受信スレッドが動作して、 キューからメッセージを取り出すとすぐに再開されます。 より高い優先順位の送信スレッドが他にあった場合、それらが最初に動作し、 再度メッセージキューが一杯になるかもしれない点に注意してください。 これが起こった場合、受信スレッドがメッセージキューに空をつくるまで、 このスレッドは、再び一時停止します。

flagsOS_MESSAGE_NOBLOCKを設定した場合、呼び出したスレッドにすぐに返ります。 キューが一杯でない場合、TRUEが返されます。キューが一杯であった場合、 FALSEが返されます。

参照

OS_InitMessageQueue, OS_ReceiveMessage, OS_JamMessage

履歴

2003/12/05 初版