ios NSOperationQueue,操作全部运行时添加并且不排队
所以,我有一组ASINetworkQueues,当前一起运行导致DB保存竞争条件。 我想创build一个NSOperationQueue,将排队这些“子队列”中的每一个。 我目前已经创build了一个主要的方法,启动“子队列”开始下载NSOperation。
我的问题是,每次我使用“addOperation”添加一个子队列到主队列,它会直接触发“main”方法,所以我的子队列同时运行。 我印象深刻的主要方法是一次被解雇。 即仅用于队列顶部的操作。
也许我错过了这里的东西,但我似乎无法弄清楚如何拖延其他操作,直到第一个完成。 此外,我似乎甚至不能让我的程序进入NSOperation isReady = 0的情况下..总是给回答是的。
这里有一些代码:
注意:我已经将NSOperation队列maxConcurrentOperations设置为1。
NSOperation主要方法:
-(void)main { [subQueue download]; }
设置队列:
ChapterDownloadOperation *cdo = [[ChapterDownloadOperation alloc] init]; cdo.chapter = ch; [chapterDownloadQueue addOperation:cdo]; [cdo release];
如果我添加多个操作,则主方法会在添加到队列的实例上触发。 是否有另一个function,我应该重写和使用,当操作准备摇摆。 我有一个感觉,主要的方法是设置操作。
任何想法不胜感激。
非常感谢。
NSOperationQueue将尽快启动主要方法,以平衡额外的处理能力。
要将队列一次限制为一个操作,可以尝试在对每个操作进行排队之前添加依赖关系:[B addDependency:A]; 直到A执行完毕,// [B main]才会被调用
但请注意,如果A被取消,B仍然会运行。
希望有所帮助!