可以按线程调用[NSProcessInfo beginActivityWithOptions]和[NSProcessIn



我有一个MacOS/X应用程序,它通常不反对应用程序打盹,但有时它会生成一个或多个子线程来执行时间敏感的网络任务,这确实需要避免被应用程序打盹。

最好的做法是让这些线程中的每一个在启动时调用[[NSProcess processInfo] beginActivityWithOptions [...]],并在退出前调用[[NSProcess processInfo] endActivity [...]],这样(希望(只有在一个或多个网络线程运行时,才能避免应用程序在我的进程上(或至少在那些特定线程上(打盹。

我的问题是,这是一种合法/可接受的调用模式,还是NSProcessInfo更像是一种完全成功的API,它不实现线程安全引用计算逻辑,如果我从多个线程调用它,可靠地产生预期行为是必要的?(如果是后者,我可以自己实现这个逻辑,但我不想在这里重新发明轮子(

此API被视为进程范围,用于报告整个应用程序正在执行特定类型的工作,该工作应该或不应该受到节能启发法的影响(同样,节能启发法是进程范围,而不是进程范围(。

使用它的最佳方式是在所有后台线程开始之前开始一个活动,并在所有重要后台线程完成之后完成它。

您可以使用DispatchGroup或任何其他您想要的工具来完成此操作。

但这并不是唯一的办法。

beginActivityWithOptions将返回_NSActivityAssertion,它通常不知道线程。你可以把你自己的线程同步机制带到这个聚会上。

多次调用此API将创建多个_NSActivityAssertion对象,这在定义上是多余的,但如果您能正确地结束每个对象,则应该可以工作。

首先,这个API应该或不应该受到节能启发的影响。

使用它的最佳方式是将其与调度组一起使用

相关内容

  • 没有找到相关文章

最新更新