我有三項任務。 task1,task2和task3。 task1和task2是異步任務,他們同時做任務,返回完成結果的時間是不可預知的。原來,我希望task1和task2同時做,並在得到結果做task3之後。如何在IOS中處理這種異步任務?
dispatch_group_t dispatchGroup = dispatch_group_create();
dispatch_group_async(dispatchGroup,dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//do task1 async
});
dispatch_group_async(dispatchGroup,dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//do task2 async
});
dispatch_group_notify(dispatchGroup, dispatch_get_main_queue(), ^(){
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
while (true) {
sleep(0.2); //avoid cpu timeslice fully used
//after get task1 and task2 result
// do task3
}});
我設計的結構如上,但我總是得到壞的結果,就像如果TASK2是使用afnetworking一個URL post請求,我不能涉足的成功塊。
有人幫我我會很感激。
你對task1和task2使用一個或多個線程嗎? – AleyRobotics
不,任務1和任務2都是使用網絡的URL發佈請求。發佈請求是異步的。 – Roby
我使用dispatch_group_async(dispatchGroup,dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),^ { });它是異步的。 – Roby