Bou*_*uke 5 multithreading nsrunloop swift
我的目标是使用 Swift 解析大型 XML 文件 (20 GB)。NSXMLParser 和与 Swift 对象的桥接存在一些性能问题,因此我正在考虑多线程。具体有以下划分:
应按顺序解析数据,因此应保持输入顺序。我的想法是在 1 和 2 上运行 NSRunLoop,允许并行处理而不会阻塞。根据Apple的文档,线程之间的通信可以通过调用来实现performSelector:onThread:withObject:waitUntilDone:。然而这个符号在 Swift 中不可用。
我认为 GCD 不适合作为解决方案。两个工作线程都应该是长时间运行的进程,新工作以随机间隔进入。
如何使用 Swift 实现上述目标(例如,多线程上的 NSRunLoops)?
上个月我第一次使用NSOperation ,它是一个非常容易子类化的对象,您可以将它们与完成块链接在一起,或者您可以将操作设置为彼此依赖,以便它们按顺序执行。
通过向 NSOperations 传递对象,与 NSOperations 进行通信也非常容易。
NSHipster: http: //nshipster.com/nsoperation/