Сборка моего приложения Mac (в основном POSIX) порождает дочерний поток, который вызывает CFRunLoopRun () для выполнения цикла событий (для получения событий изменения конфигурации сети из MacOS).
Когда приходит время упаковать вещи и уйти, основной поток вызывает CFRunLoopStop () в цикле выполнения дочернего потока, после чего CFRunLoopRun () возвращается в дочерний поток, дочерний поток завершается и основной поток (который блокировал ожидание выхода дочернего потока) можно продолжить.
Кажется, это работает, но мой вопрос: это безопасный / рекомендуемый способ сделать это? В частности, может ли вызов CFRunLoopStop () из другого потока вызвать состояние гонки? Насколько я могу судить, в документации Apple по этому вопросу ничего не сказано.
Если вызов CFRunLoopStop () из основного потока не является решением, что является хорошим решением? Я знаю, что мог бы заставить дочерний поток вызывать CFRunLoopRunInMode () и периодически просыпаться, чтобы проверить логическое значение или что-то в этом роде, но я бы предпочел, чтобы дочерний поток не проводил опросы, если я могу избежать этого.