【发布时间】:2020-11-23 21:45:05
【问题描述】:
抱歉,我无法在此处发布专有代码。基本上,它是一个 Mac GUI 应用程序。代码没有正确设计以利用 异步 概念。一切都在主线程上处理,不可能一夜之间改变设计。因此,我不想使用 dispatch_async(…) 解决方案。
问题的上下文是:我有一个在主线程上运行的耗时任务。在处理任务时,我尝试根据任务的完成百分比(从 0% 到 100%)更新/重绘进度条(NSProgressIndicator)。但是,因为任务运行在主线程上,所以主线程被阻塞了,事件队列中的任何更新/重绘事件都要等到主线程有机会看到,所以进度条没有更新/在任务执行期间完全重绘。
我正在考虑的解决方案是创建另一个处理进度条绘图的应用程序(带有 .exe 文件)。在主应用程序中,我将创建另一个进程并让该进程执行另一个应用程序。可以使用Boost inter-process message queue 将任务的完成百分比从主应用发送到其他应用。
我希望了解此解决方案的优点和缺点,因此任何想法都将不胜感激!
【问题讨论】:
标签: objective-c boost interprocess nsprogressindicator