首页 > 解决方案 > 我可以更改 XPC 服务的服务质量级别吗?

问题描述

我希望在我的应用程序中放置一个 XPC 服务,该服务需要立即处理用户输入(它从单独的进程接收)。

QOS的文档指出:

在 XPC 服务中,主线程以默认的 QoS 运行

我需要能够将 XPC 服务线程设置为具有 QoSuser-interactive以确保用户输入事件以确保发生这种情况。

是否可以更改 XPC 服务线程的 QoS?

我知道我可以创建一个守护进程并使用以下方法设置任务策略:

struct task_qos_policy qosinfo;

memset(&qosinfo, 0, sizeof(qosinfo));
qosinfo.task_latency_qos_tier = LATENCY_QOS_TIER_0;
qosinfo.task_throughput_qos_tier = THROUGHPUT_QOS_TIER_0;

task_policy_set(mach_task_self(),
                  TASK_BASE_QOS_POLICY,
                  &qosinfo,
                  TASK_QOS_POLICY_COUNT);

做这样的事情,比如在 XPC 服务的主要方法中,是实现这一目标的一种可能和适当的方式吗?

我当然可以创建一个守护进程,但我目前正在研究如何使我的架构与沙盒一起工作,以便我可以通过 Mac App Store 分发。

标签: macoscocoaxpc

解决方案


推荐阅读