Callback Thread vs Main Thread - Is Locking Required?

I know I shouldn’t be running Unity code in an FMOD callback (that seems to crash Unity to desktop), so my question is: if I want to share data from and FMOD callback with the main Unity thread, do I need to be using locks? Do those two threads run concurrently?

I guess I’m asking if I should use a Queue or a ConcurrentQueue from messages from the FMOD callback to Unity’s main thread.

Thread safety is a concern with callbacks as they can be called from multiple different FMOD threads, and Unity throws an exception whenever the API is called on anything other than the main thread as you’ve seen.
We have a Thread Safety doc with some general advice on how to use the FMOD API in a thread-safe (or unsafe) way. For the scenario you are desribing, I think a ConcurrentQueue/ConcurrentStack would be a good way to go as it is lock free, which is preferable in real time audio applications.