# OS_ReceiveMessage

## 構文

      #include <nitro/os.h>

      BOOL OS_ReceiveMessage(
           OSMessageQueue*   mq,
           OSMessage*        msg,
           s32               flag );

## 引数

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

## 返り値

メッセージがうまく取り出せた場合、TRUE を返します。
OS_MESSAGE_NOBLOCK が指定され、キューが空であった場合、FALSE を返します。

## 説明

メッセージキューからメッセージを取り出します。
また、このキューにメッセージを送るために待ち状態のスレッドをどれも実行可能状態にします。 送信スレッドは、優先順位の順に実行されます。

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

flagに`OS_MESSAGE_NOBLOCK`を設定した場合、 呼び出したスレッドにすぐに戻ります。 キューが空でなければ、`TRUE`を返し、キューが空であれば`FALSE`を返します。

## 参照

`OS_InitMessageQueue, OS_SendMessage, OS_JamMessage, OS_ReadMessage
`

## 履歴

2004/03/12 参照に`OS_ReadMessage`追加
2003/12/01 初版