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