What is the official stance on the safety of signaling Mach semaphores from within a Core Audio real-time context?
The most recent guidance I can find says:
To ensure glitch-free performance, audio processing must occur in a real-time safe context. Don’t allocate memory, perform file I/O, take locks, or interact with the Swift or Objective-C runtimes when rendering audio.
Mach semaphores have internal synchronization primitives (a spinlock and perhaps others) but I also believe that the scheduling priority level is elevated internally to prevent priority inversion. So while it seems that Mach semaphores could be prohibited I wonder if that is truly the case here.
So while a call to semaphore_signal does involve locks, in a Core Audio real-time context, is it safe?