我的 Cocoa 应用程序需要同时渲染多批生成的网页。由于 WebKit WebView 渲染仅限于主线程,因此我无法使用 GCD 在应用程序进程中执行此操作,因此我正在考虑使用某种进程间解决方案。
NSXPCConnection
是显而易见的选择,因为它与沙箱配合良好,并且透明地代理我需要使用的所有 Core Foundation 类型。然而,它似乎只为每个服务创建一个进程,这只是将我的主线程限制移动到不同的进程中,并且不允许我并行化多个渲染请求。有没有办法说服 XPC 系统为同一服务 fork 多个进程,可能使用 C API(xpc_connection_create
等)?
此时,我正在考虑制作十几个具有不同名称的相同 XPCServices
bundle ,并连接到对于特定批处理的并行渲染请求空闲的 bundle ,但这看起来很愚蠢。
最佳答案
FWIW,我向 Apple 提出了技术支持问题,他们回复说“鉴于当前发布的系统配置,没有受支持的方法来实现所需的功能”,所以我猜这是无法完成的。
我最终创建了 20 个相同的 XPC 服务并启动了 [[NSProcessInfo processInfo]processInfo]processInfo]
实例,并手动管理与它们的通信。它实际上运行得很好,我能够最大限度地利用所有处理器来完成渲染任务。
关于macos - 使用 XPC 并行化 Cocoa WebView 渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20645623/