

#include <nitro/os.h>
BOOL OS_ReadMessage(
OSMessageQueue* mq,
OSMessage* msg,
s32 flags );
| mq | メッセージキューへのポインタ |
| msg | 覗いたメッセージ |
| flags | OS_MESSAGE_BLOCKを設定した場合、OS_ReadMessage関数は、空のキューをブロックします。 OS_MESSAGE_NOBLOCKを設定した場合、OS_ReadMessage関数は、キューが空であろうとなかろうと、 すぐに返ります。 |
メッセージがうまく取り出せた場合、TRUE を返します。
OS_MESSAGE_NOBLOCK が指定され、キューが空であった場合、FALSE を返します。
メッセージキューの先頭のメッセージをコピーします。
メッセージキューの状態は変化しません。また OS_ReceiveMessatge() と違って、このキューにメッセージを送るために待ち状態のスレッドを実行可能状態にすることもありません。いわば、OS_ReadMessage() は、メッセージキューの先頭のメッセージを覗くための関数です。
flagsにOS_MESSAGE_BLOCKを設定した場合、キューが空
(empty) であれば、この関数を呼び出したスレッドは一時停止されます。メッセージがキューに送られるとすぐに再開されます。
より高い優先順位の受信スレッドが他にあった場合、これらのスレッドが最初に実行し、
メッセージを取り出す点に注意してください。このスレッドが実行する時にメッセージキューが空であった場合、
他のメッセージがキューに送られるまで、このスレッドは再び一時停止します。
flagsにOS_MESSAGE_NOBLOCKを設定した場合、
呼び出したスレッドにすぐに戻ります。
キューが空でなければ、TRUE を返し、キューが空であればFALSE を返します。
OS_InitMessageQueue, OS_SendMessage, OS_ReceiveMessage
2004/03/12 初版