Why does MSGQ_put sometimes result in failure even though the handle to the message queue was previously obtained through a call to MSGQ_locate?
A call to MSGQ_locate() returns a handle to the message queue, based on the current status of the message queue. However, it is possible that the message queue that was located, is closed before MSGQ_put() is used to send a message to it. In this case, it cannot be ensured that the MSGQ_put() call will succeed, since the message queue is no longer valid. To avoid such situations where messages are dropped, the applications on the GPP and DSP can synchronize their cleanup activities.