????GCD??iOS?????????????????????GCD?????API????????????????????????á?
????GCD???е????
????????????????У???????????????????鶨??????????DispatchQueue????????У????к????
??????????з??????????????ж??У?SerialDispatchQueue???????????ж??У?ConcurrentDispatchQueue????
????????????????block?????磬???????????????е???????
????1 dispatch_async(queue?? block);
????????queue???????????????queue????ж??У??????????????????У????????????????????
??????queue????ж??????????????????????????????????????к??????????????????ж??????
?????????????е??????????????XNU???????????????磬????????10?????????10?????????????10?????????????????????????????????????
???????????
?????????????????У??????MainDispatchQueue???????GlobalDispatchQueue??
?????????????????????RunLoop???????У??????????????ж??У???????????????????UI??
?????????????????????ж??У??и???????????4?????????
?????????????????£?
????1 dispatch_queue_t queue = dispatch_get_main_queue();
????2
????3 dispatch queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRORITY_DEFAULT?? 0)
?????????????
????1     dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT?? 0);
????2     dispatch_async(queue?? ^{
????3         //...
????4     });
??????????????????????????????????????顣???GCD??????????????????е?
???????????????????????????????????????????????????????
?????????????????
????1 + (id)shareInstance {
????2     static dispatch_once_t onceToken;
????3     dispatch_once(&onceToken?? ^{
????4         _shareInstance = [[self alloc] init];
????5     });
????6 }
????????????????????????????????????????????????С?
??????????
??????????????????????????????????????У?????????????????????????????
????????????????????飬?????????γ?????飬?????????????ж???????????????????к?????????
????1     dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT?? 0);
????2     dispatch_group_t group = dispatch_group_create();
????3
????4     dispatch_group_async(group?? queue?? ^{ NSLog(@"1"); });
????5     dispatch_group_async(group?? queue?? ^{ NSLog(@"2"); });
????6     dispatch_group_async(group?? queue?? ^{ NSLog(@"3"); });
????7     dispatch_group_async(group?? queue?? ^{ NSLog(@"4"); });
????8     dispatch_group_async(group?? queue?? ^{ NSLog(@"5"); });
????9
????10    dispatch_group_notify(group?? dispatch_get_main_queue()?? ^{ NSLog(@"done"); });