La compilación Mac de mi aplicación (principalmente POSIX) genera un subproceso secundario que llama a CFRunLoopRun() para hacer un ciclo de evento (para obtener eventos de cambio de configuración de red de MacOS).¿Es seguro llamar a CFRunLoopStop desde otro hilo?
Cuando es hora de empacar y marcharse, el hilo principal llama a CFRunLoopStop() en el ciclo de ejecución del subproceso secundario, en cuyo punto CFRunLoopRun() retorna en el subproceso secundario, el subproceso secundario sale, y el principal subproceso (que estaba bloqueando la espera de que salga el subproceso secundario) puede continuar.
Esto parece funcionar, pero mi pregunta es: ¿es esta una forma segura/recomendada de hacerlo? En particular, ¿está llamando a CFRunLoopStop() desde otro hilo que puede causar una condición de carrera? La documentación de Apple no dice nada sobre el tema, hasta donde yo sé.
Si llamar a CFRunLoopStop() desde el hilo principal no es la solución, ¿cuál es una buena solución? Sé que podría hacer que el hilo hijo llame a CFRunLoopRunInMode() y me despierto cada cierto tiempo para verificar un booleano o algo así, pero preferiría no tener el hilo hijo haciendo ningún sondeo si puedo evitarlo.