The main restriction is there must be an event loop running on the main thread. No special action is required for GUI applications, but for non-GUI applications, a RunOsxRunLoop() function is provided that needs to be called from the main thread.