Tag: cfrunloop

从另一个线程调用CFRunLoopStop是否安全?

我的(主要是POSIX)应用程序的Mac构建产生一个子线程,它调用CFRunLoopRun()来执行事件循环(从MacOS获取网络配置更改事件)。 什么时候打包并离开,主线程在子线程的运行循环上调用CFRunLoopStop(),此时CFRunLoopRun()在子线程中返回,子线程退出,主线程(这是阻止等待子线程退出)可以继续。 这似乎有效,但我的问题是:这是一种安全/推荐的方式吗? 特别是,从另一个线程调用CFRunLoopStop()容易导致竞争条件? 据我所知,Apple的文档对此主题保持沉默。 如果从主线程调用CFRunLoopStop()不是解决方案,那么什么是好的解决方案? 我知道我可以让子线程调用CFRunLoopRunInMode()并经常唤醒以检查布尔值或其他东西,但我宁愿不让子线程做任何轮询,如果我可以避免它。