There are some exceptions, but they shouldn't be a problem:
- Initialization and term functions of the sound engine are not thread safe and are blocking.
- Functions like PostEvent(...), or SetRTPCValue( ... ) immediately add in a queue so it is processed in a different thread. The only case where they will block will be if the message queue is full and there is no available memory. You can set parameters to decide the maxmum allocated memory for this queue in the initialization settings of the sound engine. If the queue gets full, the function will block and an emergency RenderAudio is sent to the audio thread to start processing the message queue.
- Functions of the SDK that are of type Query (defined in namespace AK::SoundEngine::Query) that allow the game to immediately query back information from the audio objects are blocking on some lock that may be held by the audiothread. Query functions are optional and should not be used in critical paths.
No message gets discarded in the message queue.