Macos 使用XPC并行化Cocoa WebView渲染

Macos 使用XPC并行化Cocoa WebView渲染,macos,cocoa,webview,ipc,nsxpcconnection,Macos,Cocoa,Webview,Ipc,Nsxpcconnection,我的Cocoa应用程序需要同时呈现多批生成的网页。由于WebKit WebView渲染仅限于主线程,因此我无法在应用程序的进程内使用GCD来完成此操作,因此我正在考虑使用某种进程间解决方案 代码> NSXPCLink 是显而易见的选择,因为它与沙箱很好地配合,透明地代理了我需要处理的所有核心基础类型。然而,它似乎只为每个服务创建一个进程,这只是将我的主线程限制移动到另一个进程中,不允许我并行处理多个渲染请求。有没有办法说服XPC系统为同一服务分叉多个进程,可能使用C API(XPC\u conn

我的Cocoa应用程序需要同时呈现多批生成的网页。由于WebKit WebView渲染仅限于主线程,因此我无法在应用程序的进程内使用GCD来完成此操作,因此我正在考虑使用某种进程间解决方案

<>代码> NSXPCLink 是显而易见的选择,因为它与沙箱很好地配合,透明地代理了我需要处理的所有核心基础类型。然而,它似乎只为每个服务创建一个进程,这只是将我的主线程限制移动到另一个进程中,不允许我并行处理多个渲染请求。有没有办法说服XPC系统为同一服务分叉多个进程,可能使用C API(
XPC\u connection\u create
等)


此时,我正在考虑制作十几个相同的
XPCServices
捆绑包,使用不同的名称,并连接到特定批并行渲染请求中空闲的捆绑包,但这似乎很愚蠢。

FWIW,我向苹果公司提出了一个技术支持问题,他们回答说“鉴于目前的运输系统配置,没有支持的方法来实现所需的功能”,因此我猜这是不可能的


我最终创建了20个相同的XPC服务并启动了
[[NSProcessInfo processInfo]processorCount]
实例,我手动管理与它们的通信。它实际上运行得很好,我能够最大限度地利用所有处理器执行渲染任务。

我使用的设置与您在这里描述的用于我正在使用的应用程序的设置类似。然而,我的服务相当不可靠,而且似乎经常因EXC\B而崩溃AD_随机访问。看起来WebView似乎不高兴。我的XPC服务不过是一个基本的服务包装器,在主线程上创建了一个WebView,加载URL并在完成后报告。你需要做什么“特殊”吗“在您的服务中让WebView开心?我将RunLoopType更改为NSRunLoop,并在适当的情况下强制主线程。还有别的吗?