iOS開(kāi)發(fā) 多任務(wù)之間具有依賴關(guān)系實(shí)現(xiàn)方案

在實(shí)際開(kāi)發(fā)過(guò)程中,有時(shí)候需要設(shè)置任務(wù)之間的依賴關(guān)系,iOS主要有兩種方案,一種是基于GCD,另一種是基于NSOperation,下面分別介紹。

/**任務(wù)1,2并行執(zhí)行,執(zhí)行完后任務(wù)3執(zhí)行*/

1.基于GCD的實(shí)現(xiàn)方案

/**方法1*/

[objc]view plaincopy

dispatch_group_t?group?=dispatch_group_create();

dispatch_group_async(group,dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),?^{

NSLog(@"任務(wù)1");

});

dispatch_group_async(group,dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),?^{

NSLog(@"任務(wù)2");

});

dispatch_group_notify(group,dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),?^{

NSLog(@"任務(wù)3");

});

/*方法2*/

/*

*dispatch_barrier_async會(huì)等待當(dāng)前隊(duì)列的任務(wù)執(zhí)行完之后再執(zhí)行dispatch_barrier_async(myqueue, ^{

NSLog(@"任務(wù)3");

});中定義的任務(wù),該任務(wù)執(zhí)行完成后,會(huì)繼續(xù)執(zhí)行隊(duì)列后面的任務(wù)。

*/

[objc]view plaincopy

dispatch_queue_t?myqueue?=dispatch_queue_create("myqueue.queue",DISPATCH_QUEUE_CONCURRENT);

dispatch_async(myqueue,?^{

NSLog(@"任務(wù)1");

});

dispatch_async(myqueue,?^{

NSLog(@"任務(wù)2");

});

dispatch_barrier_async(myqueue,?^{

NSLog(@"任務(wù)3");

});

dispatch_async(myqueue,?^{

NSLog(@"任務(wù)4");

});

dispatch_async(myqueue,?^{

NSLog(@"任務(wù)5");

});

任務(wù)1,2并行執(zhí)行,執(zhí)行完后任務(wù)3執(zhí)行,執(zhí)行完后任務(wù)4,5并行執(zhí)行。

2.基于NSOPeration實(shí)現(xiàn)

[objc]view plaincopy

NSBlockOperation*opration1=?[NSBlockOperationblockOperationWithBlock:^{

NSLog(@"任務(wù)1");

}];

NSBlockOperation*opration2=?[NSBlockOperationblockOperationWithBlock:^{

NSLog(@"任務(wù)2");

}];

NSOperationQueue*operationQueue?=?[[NSOperationQueuealloc]init];

[operationQueueaddOperation:opration1];

[operationQueueaddOperation:opration2];

NSBlockOperation*opration3=?[NSBlockOperationblockOperationWithBlock:^{

NSLog(@"任務(wù)3");

}];

[opration3addDependency:opration1];

[opration3addDependency:opration2];

[operationQueueaddOperation:opration3];

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容