iOS?????GCD??????
???????????? ???????[ 2014/7/31 11:23:47 ] ??????????????? ios
??????????????
????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????????
??????

???·???
??????????????????
2023/3/23 14:23:39???д?ò??????????
2023/3/22 16:17:39????????????????????Щ??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???·???????·
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11