# OS_JamMessage

## 構文

      #include <nitro/os.h>

      BOOL OS_JamMessage(
           OSMessageQueue*   mq,
           OSMessage         msg,
           s32               flags );

## 引数

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

## 返り値

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

## 説明

`OS_JamMessage()` 関数は、指定したメッセージキューの先頭にメッセージ挿入されること以外は、 `OS_SendMessage()` 関数と同じです。 この呼び出しは、優先順位の高いメッセージを伝達するために使います。

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

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

## 参照

`OS_InitMessageQueue, OS_SendMessage, OS_ReceiveMessage
`

## 履歴

2003/12/01 初版