点击(此处)折叠或打开
-
dispatch_queue_t dispatchQueue = dispatch_queue_create("ted.queue.next", DISPATCH_QUEUE_CONCURRENT);
-
dispatch_group_t dispatchGroup = dispatch_group_create();
-
dispatch_group_async(dispatchGroup, dispatchQueue, ^(){
-
NSLog(@"dispatch-1");
-
});
-
dispatch_group_async(dispatchGroup, dispatchQueue, ^(){
-
NSLog(@"dspatch-2");
-
});
-
dispatch_group_notify(dispatchGroup, dispatch_get_main_queue(), ^(){
-
NSLog(@"end");
- });
手动管理
点击(此处)折叠或打开
-
dispatch_group_enter(group);
-
-
dispatch_async(queue, ^{
-
-
//。。。
-
-
dispatch_group_leave(group);
-
- });
例子:
点击(此处)折叠或打开
-
dispatch_group_t group = dispatch_group_create();
-
-
MyCoreDataObject *coreDataObject;
-
-
dispatch_group_enter(group);
-
AFHTTPRequestOperation *operation1 = [[AFHTTPRequestOperation alloc] initWithRequest:request1];
-
[operation1 setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
-
coreDataObject.attribute1 = responseObject;
-
sleep(5);
-
dispatch_group_leave(group);
-
}];
-
[operation1 start];
-
-
dispatch_group_enter(group);
-
AFHTTPRequestOperation *operation2 = [[AFHTTPRequestOperation alloc] initWithRequest:request1];
-
[operation2 setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
-
coreDataObject.attribute2 = responseObject;
-
sleep(10);
-
dispatch_group_leave(group);
-
}];
-
[operation2 start];
-
-
dispatch_group_wait(group, DISPATCH_TIME_FOREVER);
-
dispatch_release(group);
-
- [context save:nil];
dispatch_barrier_async
点击(此处)折叠或打开
-
dispatch_queue_t concurrentQueue = dispatch_queue_create("my.concurrent.queue", DISPATCH_QUEUE_CONCURRENT);
-
dispatch_async(concurrentQueue, ^(){
-
NSLog(@"dispatch-1");
-
});
-
dispatch_async(concurrentQueue, ^(){
-
NSLog(@"dispatch-2");
-
});
-
dispatch_barrier_async(concurrentQueue, ^(){
-
NSLog(@"dispatch-barrier");
-
});
-
dispatch_async(concurrentQueue, ^(){
-
NSLog(@"dispatch-3");
-
});
-
dispatch_async(concurrentQueue, ^(){
-
NSLog(@"dispatch-4");
- })