macos - 使用 XPC 并行化 Cocoa WebView 渲染

标签 macos cocoa webview ipc nsxpcconnection

我的 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/

相关文章:

c++ - 如何在 Mac OSX 上编译 OpenCV + CUDA(我试过 cmake 和一个 makefile)?

cocoa - "__NSAutoreleaseFreedObject(): release of previously deallocated object"出乎意料

android - 在 Android 的 WebView 中修改选择时文本选择菜单消失

android - 使用 Android WebView 连接到带有客户端证书的安全服务器

java - 如何使用selenium Webdriver(Mac)中的Robot类上传多个文件?

macos - 启用关闭显示模式而不满足 Apple 的要求

c# - 搜索 .NET Core 或标准 NuGet 包

objective-c - NSString 绘制矩形 :withAttributes: causes 'unrecognized selector sent to instance ...'

objective-c - 如何在全屏 View 前显示 NSPanel?

html - 为什么 WebView 的 dataWithPDFInsideRect 不能在 Mavericks 上创建高质量的 PDF?