私の(主にPOSIX)アプリケーションのMacビルドは、CFRunLoopRun()を呼び出して(MacOSからネットワーク構成変更イベントを取得するために)イベントループを行う子スレッドを生成します。別のスレッドからCFRunLoopStopを呼び出しても安全ですか?
メインスレッドは、物事をまとめるときに、子スレッドの実行ループでCFRunLoopStop()を呼び出します。この時点で、CFRunLoopRun()は子スレッドで戻り、子スレッドは終了し、メインスレッドスレッド(子スレッドが終了するのをブロックしていたスレッド)は続行できます。
これはうまくいくようですが、私の質問です。これは安全な方法ですか?特に、CFRunLoopStop()を競合状態の原因となる別のスレッドから呼び出していますか?私が知る限り、Appleのドキュメンテーションはこのテーマについては言及していません。
メインスレッドからCFRunLoopStop()を呼び出すのが解決策ではない場合、良い解決策は何ですか?私は子スレッドがCFRunLoopRunInMode()を呼び出すことができ、ブーリアンや何かをチェックするために頻繁に目を覚ますことができることを知っていますが、私はそれを避けることができる場合、子スレッドにポーリングを行わないことを望みます。