gpt4 book ai didi

ios - NSOperationQueue添加后台线程操作

转载 作者:行者123 更新时间:2023-12-01 18:47:15 24 4
gpt4 key购买 nike

我试图将后台线程操作添加到NSOperation队列中,并希望使其按顺序执行,因此我将 setMaxConcurrentOperationCount 设置为1,但无法实现同步进程。

我尝试了以下代码,

 NSOperationQueue *queue = [NSOperationQueue new];
[queue setMaxConcurrentOperationCount:1];


[queue addOperationWithBlock:^{

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
for (uint i=0; i<=9999999; i++) {
NSLog(@"Loop A");
}
});
}];

[queue addOperationWithBlock:^{

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
for (uint i=0; i<=9999999; i++) {
NSLog(@"Loop B");
}
});
}];

那会记录下来,
2016-01-04 17:25:41.861 TestOperation[582:111196] Loop B
2016-01-04 17:25:41.861 TestOperation[582:111194] Loop A
2016-01-04 17:25:41.864 TestOperation[582:111196] Loop B
2016-01-04 17:25:41.866 TestOperation[582:111194] Loop A
2016-01-04 17:25:41.867 TestOperation[582:111196] Loop B
2016-01-04 17:25:41.867 TestOperation[582:111194] Loop A
2016-01-04 17:25:41.868 TestOperation[582:111194] Loop A
2016-01-04 17:25:41.869 TestOperation[582:111194] Loop A

并希望此操作先完成循环A,然后再完成循环B。

最佳答案

您只是不应该使用dispatch_async。您已经通过使用操作队列将工作移至后台线程,因此无需再次使用dispatch_async进行移动。通过使用dispatch_async,可以允许操作完成,然后您可以同时进行其他2个后台线程的处理。

关于ios - NSOperationQueue添加后台线程操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34590757/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com