使用结合框架的操作队列[关闭]

Posted

技术标签:

【中文标题】使用结合框架的操作队列[关闭]【英文标题】:Using operation queues with combine framework [closed] 【发布时间】:2019-07-09 07:23:45 【问题描述】:

随着combine框架的到来,是否不再需要使用操作队列了。例如,苹果在 WWDC 应用程序中几乎到处都使用操作队列。那么如果我们使用 SwiftUI 和 combine(异步编程),会不会需要用到 Operation Queues?

【问题讨论】:

组合框架本身与操作队列有什么关系?您是否期望现在因为我们有一个组合框架,所以不需要操作队列?你为什么这么认为? @J.Doe 我不知道。我很困惑,我需要实现它来看看它是如何工作的。但是,这只是我想到的事情,由于我找不到任何有关这方面的资料,所以我决定在这里发布。 【参考方案1】:

Combine 只是另一种异步模式,但不会取代操作队列(或调度队列)。正如 GCD 和操作队列在我们的代码库中愉快地共存一样,Combine 也是如此。

GCD 非常擅长编写易于编写但仍具有高性能的代码,用于将任务分派到各种队列。因此,如果您有可能阻塞主线程的风险,GCD 可以很容易地将其分派到后台线程,然后将一些完成块分派回主线程。它还处理后台线程上的计时器、数据同步、高度优化的并行化代码等。

操作队列非常适合高级任务(尤其是那些本身是异步的)。您可以将这些工作片段包装在离散对象中(以便很好地分离职责),并且操作队列非常优雅地管理执行、取消和约束并发。

Combine 擅长编写简洁、声明性、可组合的异步事件处理代码。它擅长编写概述例如用户界面应如何反映某些事件(网络任务、通知,甚至是界面更新)的代码。

这显然过于简单化了,但这些只是各种框架的一些优势。这三个框架肯定有重叠,当然,但每个框架都有它的位置。

【讨论】:

我想我会通过实施来了解更多。非常感谢@Rob。 @Reckoner ***.com/questions/59743938/… 我开发了一个第三方框架,你可以同时使用 NSOperation 和 Combine 。如果您能看一下,我将不胜感激。 github.com/ssamadgh/AOperation@Reckoner

以上是关于使用结合框架的操作队列[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Python任务队列替代方案和框架[关闭]

图文结合!Redis延迟队列golang高效实践

将 Azure 服务总线队列与 WCF 结合使用的优势

java 线程池

将多个不同的队列压缩到Python中的for循环中?

异步任务队列Celery在Django中的使用