线程和 XPC

Posted

技术标签:

【中文标题】线程和 XPC【英文标题】:Threads and XPC 【发布时间】:2013-10-12 00:00:28 【问题描述】:

我想在 XPC 服务中运行多个并发逻辑操作。但问题是,XPC 服务是单例的——它们要么正在运行,要么没有。我可以使用NSThread、调度队列或类似的东西来模拟吗?

将使用此 XPC 服务的应用程序是一个沙盒用户应用程序,它使用 XPC 服务来解决沙盒 fork/exec 中固有的限制。

【问题讨论】:

您的服务只是另一个过程。您是否尝试过使用线程或调度队列?你真的遇到什么问题了吗? @KurtRevis:老实说,我还没有尝试过。我想知道理论上是否可行。您的评论似乎表明它是,所以我会尝试它。 【参考方案1】:

如果您谈论的是沙盒 XPC,那么是的,您可以使用多线程,但是,launchd 会密切关注您并根据当时的负载对其进行大量节流。

如果活动过多,它可能会因违反“滥用 API”而被终止(launchd 很喜欢对 XPC 做很多事情)。

如果您打算不被沙盒化,并使用 mach 服务,那么您应该没有问题。

你在看什么样的服务/服务器/助手/什么?

它是为用户空间设计的吗?即当用户打开其中包含的应用程序时?还是它是守护进程和其他更深层服务的一部分?

【讨论】:

以上是关于线程和 XPC的主要内容,如果未能解决你的问题,请参考以下文章

XPC 服务:提高工作线程上的堆栈大小

我可以更改 XPC 服务的服务质量级别吗?

混合 NSXPCConnection 和 xpc C API

如何在macOS上使用MTLSharedTextureHandle或MTLSharedEventHandle与C XPC接口?

XPC 和异常处理

XPC 客户端等待服务加载