??????????????
????1     dispatch_after(dispatch_time(DISPATCH_TIME_NOW?? (int64_t)(10 * NSEC_PER_SEC))?? dispatch_get_main_queue()?? ^{
????2         //...
????3     });
??????δ???????10??????????RunLoop???С?
????dispatch_asycn??dispatch_sync
???????????й???????dispatch_async????????????????????????????δ???
????1     dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT?? 0);
????2
????3     dispatch_async(queue?? ^{
????4         NSLog(@"1");
????5     });
????6
????7     NSLog(@"2");
??????δ????????????????У???????dispatch_async???е????????????????????????У?async????????????????????????????????block???е?????????????????????У??????????????????????????????????????12??21??????????????????????RunLoop???????????е??
?????????????????“???”????dispatch_sync?????????£?
????1     dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT?? 0);
????2
????3     dispatch_sync(queue?? ^{
????4         NSLog(@"1");
????5     });
????6
????7     NSLog(@"2");
????????ζ????????????????????????????????????????????????????????????????????????12???
???????????????????????????????У????????dispatch_sync????л??????????л?????????
????1     dispatch_queue_t queue = dispatch_get_main_queue();
????2     dispatch_sync(queue?? ^{
????3         NSLog(@"1");
????4     });
??????δ?????????????????
????1.????????dispatch_sync??block?????????к?????block???????????????????????????
????2.?????????????????block?????????????????е?????????????????????????????????
???????????????γ??????????????????????????dispatch_sync???????????????????????
????????????
???????????????????????????????ж??к??????ж??У??????????????????????к???ж??У????????
????1     dispatch_queue_t mySerialDispatchQueue = dispatch_queue_create("com.Steak.GCD"?? DISPATCH_QUEUE_SERIAL);
????2     dispatch_queue_t myConcurrentDispatchQueue = dispatch_queue_create("com.Steak.GCD"?? DISPATCH_QUEUE_CONCURRENT);
??????MRC?£??????????????????????
????1     dispatch_release(myConcurrentDispatchQueue);
???????????????к????????????????????????????????????е?????????????
????1     dispatch_queue_t myConcurrentDispatchQueue = dispatch_queue_create("com.Steak.GCD"?? DISPATCH_QUEUE_CONCURRENT);
????2     dispatch_queue_t targetQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND?? 0);
????3     dispatch_set_target_queue(myConcurrentDispatchQueue?? targetQueue);
?????????????????е????????????????????????????????????е????
???????С????ж??????д?????
?????????ж??У?SerialDispatchQueue?????м?????block???????????????????block???????????n?????ж??У?????????????е??ж????????????????????n??????????????Щ????
??????????ж??У????????????????????????????/??????????????????????磬???????????????????????????????????????????????????????????????????ж??е??У???????ж?????????????????????????????????????
???????????????ж??л???????????л?????????????????????????????????ò??ж??е??????????????????
1     dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT?? 0);
2     dispatch_async(queue?? ^{
3         //??????
4     });
5     dispatch_async(queue?? ^{
6         //??????2
7     });
8     dispatch_async(queue?? ^{
9         //????д??
10     });
11     dispatch_async(queue?? ^{
12         //??????3
13     });
14     dispatch_async(queue?? ^{
15         //??????4
16     });

???????????5???????????????????????????????????????1????2??н??????????д??д??????????ж??3????4??
?????????????Ч??????????????GCD???????API??
????1     dispatch_barrier_async(queue?? ^{
????2         //????д??
????3     });
?????????????д????????????????
??????????????????????в????????????ò??ж??У?CONCURRENT????????
$news??????????????
????1     dispatch_after(dispatch_time(DISPATCH_TIME_NOW?? (int64_t)(10 * NSEC_PER_SEC))?? dispatch_get_main_queue()?? ^{
????2         //...
????3     });
??????δ???????10??????????RunLoop???С?
????dispatch_asycn??dispatch_sync
???????????й???????dispatch_async????????????????????????????δ???
????1     dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT?? 0);
????2
????3     dispatch_async(queue?? ^{
????4         NSLog(@"1");
????5     });
????6
????7     NSLog(@"2");
??????δ????????????????У???????dispatch_async???е????????????????????????У?async????????????????????????????????block???е?????????????????????У??????????????????????????????????????12??21??????????????????????RunLoop???????????е??
?????????????????“???”????dispatch_sync?????????£?
????1     dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT?? 0);
????2
????3     dispatch_sync(queue?? ^{
????4         NSLog(@"1");
????5     });
????6
????7     NSLog(@"2");
????????ζ????????????????????????????????????????????????????????????????????????12???
???????????????????????????????У????????dispatch_sync????л??????????л?????????
????1     dispatch_queue_t queue = dispatch_get_main_queue();
????2     dispatch_sync(queue?? ^{
????3         NSLog(@"1");
????4     });
??????δ?????????????????
????1.????????dispatch_sync??block?????????к?????block???????????????????????????
????2.?????????????????block?????????????????е?????????????????????????????????
???????????????γ??????????????????????????dispatch_sync???????????????????????
????????????
???????????????????????????????ж??к??????ж??У??????????????????????к???ж??У????????
????1     dispatch_queue_t mySerialDispatchQueue = dispatch_queue_create("com.Steak.GCD"?? DISPATCH_QUEUE_SERIAL);
????2     dispatch_queue_t myConcurrentDispatchQueue = dispatch_queue_create("com.Steak.GCD"?? DISPATCH_QUEUE_CONCURRENT);
??????MRC?£??????????????????????
????1     dispatch_release(myConcurrentDispatchQueue);
???????????????к????????????????????????????????????е?????????????
????1     dispatch_queue_t myConcurrentDispatchQueue = dispatch_queue_create("com.Steak.GCD"?? DISPATCH_QUEUE_CONCURRENT);
????2     dispatch_queue_t targetQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND?? 0);
????3     dispatch_set_target_queue(myConcurrentDispatchQueue?? targetQueue);
?????????????????е????????????????????????????????????е????
???????С????ж??????д?????
?????????ж??У?SerialDispatchQueue?????м?????block???????????????????block???????????n?????ж??У?????????????е??ж????????????????????n??????????????Щ????
??????????ж??У????????????????????????????/??????????????????????磬???????????????????????????????????????????????????????????????????ж??е??У???????ж?????????????????????????????????????
???????????????ж??л???????????л?????????????????????????????????ò??ж??е??????????????????
1     dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT?? 0);
2     dispatch_async(queue?? ^{
3         //??????
4     });
5     dispatch_async(queue?? ^{
6         //??????2
7     });
8     dispatch_async(queue?? ^{
9         //????д??
10     });
11     dispatch_async(queue?? ^{
12         //??????3
13     });
14     dispatch_async(queue?? ^{
15         //??????4
16     });

???????????5???????????????????????????????????????1????2??н??????????д??д??????????ж??3????4??
?????????????Ч??????????????GCD???????API??
????1     dispatch_barrier_async(queue?? ^{
????2         //????д??
????3     });
?????????????д????????????????
??????????????????????в????????????ò??ж??У?CONCURRENT????????