多线程《API》相关_简单了解2

gcd相关API的简单使用

// gcd循环
- (void)applyGCDLoop {
    dispatch_queue_t queue = dispatch_queue_create(NULL, DISPATCH_QUEUE_CONCURRENT);
    dispatch_apply(5, queue, ^(size_t iteration) {
        NSLog(@"_任务_%@",[NSThread currentThread]);
    });
    NSLog(@"_结束_");
}
/*
2022-08-20 18:29:40.561764+0800 YDBasicPublicCourse[39721:2480584] _任务_<NSThread: 0x600003afab80>{number = 8, name = (null)}
2022-08-20 18:29:40.561800+0800 YDBasicPublicCourse[39721:2480582] _任务_<NSThread: 0x600003a8ee40>{number = 4, name = (null)}
2022-08-20 18:29:40.561853+0800 YDBasicPublicCourse[39721:2480581] _任务_<NSThread: 0x600003afa180>{number = 7, name = (null)}
2022-08-20 18:29:40.562020+0800 YDBasicPublicCourse[39721:2480582] _任务_<NSThread: 0x600003a8ee40>{number = 4, name = (null)}
2022-08-20 18:29:40.562420+0800 YDBasicPublicCourse[39721:2480529] _任务_<_NSMainThread: 0x600003ab0840>{number = 1, name = main}
2022-08-20 18:29:40.563278+0800 YDBasicPublicCourse[39721:2480529] _结束_
*/
// gcd循环apply内部再使用异步
- (void)applyGCDLoop {
    dispatch_queue_t queue = dispatch_queue_create(NULL, DISPATCH_QUEUE_CONCURRENT);
    dispatch_apply(5, queue, ^(size_t iteration) {
//        NSLog(@"_任务_%@",[NSThread currentThread]);
        dispatch_async(queue, ^{
            NSLog(@"_任务_%@",[NSThread currentThread]);
        });
    });
    NSLog(@"_结束_");
}
/*
2022-08-20 18:44:53.937721+0800 YDBasicPublicCourse[39932:2493458] _结束_
2022-08-20 18:44:53.937789+0800 YDBasicPublicCourse[39932:2493588] _任务_<NSThread: 0x600000667040>{number = 4, name = (null)}
2022-08-20 18:44:53.937789+0800 YDBasicPublicCourse[39932:2493589] _任务_<NSThread: 0x60000066c280>{number = 7, name = (null)}
2022-08-20 18:44:53.937805+0800 YDBasicPublicCourse[39932:2493591] _任务_<NSThread: 0x600000668300>{number = 6, name = (null)}
2022-08-20 18:44:53.937819+0800 YDBasicPublicCourse[39932:2493587] _任务_<NSThread: 0x600000615f40>{number = 5, name = (null)}
2022-08-20 18:44:53.937969+0800 YDBasicPublicCourse[39932:2493589] _任务_<NSThread: 0x60000066c280>{number = 7, name = (null)}
*/
// group——随机运行
// 多张图片下载后变成一张图片,组内完成通知全部完成。
- (void)group {
    dispatch_group_t group = dispatch_group_create();
    dispatch_group_enter(group);
    dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{
        dispatch_async(dispatch_get_global_queue(0, 0), ^{
            NSLog(@"_任务1_%@",[NSThread currentThread]);
            dispatch_group_leave(group);
        });
    });
    
    dispatch_group_enter(group);
    dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{
        dispatch_async(dispatch_get_global_queue(0, 0), ^{
            NSLog(@"_任务2_%@",[NSThread currentThread]);
            dispatch_group_leave(group);
        });
    });
    
    dispatch_group_enter(group);
    dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{
        dispatch_async(dispatch_get_global_queue(0, 0), ^{
            NSLog(@"_任务3_%@",[NSThread currentThread]);
            dispatch_group_leave(group);
        });
    });
    
    dispatch_group_notify(group, dispatch_get_global_queue(0, 0), ^{
        NSLog(@"_结束_%@",[NSThread currentThread]);
    });
}
/*
随机结果:
2022-08-20 20:04:02.685113+0800 YDBasicPublicCourse[40488:2528500] _任务2_<NSThread: 0x6000037ec580>{number = 4, name = (null)}
2022-08-20 20:04:02.685119+0800 YDBasicPublicCourse[40488:2528494] _任务3_<NSThread: 0x6000037eab40>{number = 7, name = (null)}
2022-08-20 20:04:02.685186+0800 YDBasicPublicCourse[40488:2528495] _任务1_<NSThread: 0x6000037e9900>{number = 5, name = (null)}
2022-08-20 20:04:02.685617+0800 YDBasicPublicCourse[40488:2528494] _结束_<NSThread: 0x6000037eab40>{number = 7, name = (null)}


随机结果2:
2022-08-20 20:05:47.390430+0800 YDBasicPublicCourse[40501:2529997] _任务1_<NSThread: 0x600000a1d500>{number = 5, name = (null)}
2022-08-20 20:05:47.390430+0800 YDBasicPublicCourse[40501:2529994] _任务2_<NSThread: 0x600000a1df40>{number = 4, name = (null)}
2022-08-20 20:05:47.390430+0800 YDBasicPublicCourse[40501:2529993] _任务3_<NSThread: 0x600000a09480>{number = 6, name = (null)}
2022-08-20 20:05:47.390792+0800 YDBasicPublicCourse[40501:2529993] _结束_<NSThread: 0x600000a09480>{number = 6, name = (null)}
*/
// group
- (void)group {
    dispatch_group_t group = dispatch_group_create();
    dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{
        NSLog(@"_任务1_%@",[NSThread currentThread]);
    });
    dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{
        NSLog(@"_任务2_%@",[NSThread currentThread]);
    });
    dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{
        NSLog(@"_任务3_%@",[NSThread currentThread]);
    });
    dispatch_group_notify(group, dispatch_get_global_queue(0, 0), ^{
        NSLog(@"_结束_%@",[NSThread currentThread]);
    });
}
/*
随机结果1:
2022-08-20 20:16:47.488590+0800 YDBasicPublicCourse[40604:2543810] _任务2_<NSThread: 0x600000d7a4c0>{number = 4, name = (null)}
2022-08-20 20:16:47.488590+0800 YDBasicPublicCourse[40604:2543809] _任务1_<NSThread: 0x600000d74c80>{number = 6, name = (null)}
2022-08-20 20:16:47.488590+0800 YDBasicPublicCourse[40604:2543812] _任务3_<NSThread: 0x600000d76580>{number = 7, name = (null)}
2022-08-20 20:16:47.489105+0800 YDBasicPublicCourse[40604:2543809] _结束_<NSThread: 0x600000d74c80>{number = 6, name = (null)}

随机结果2:
2022-08-20 20:17:54.554155+0800 YDBasicPublicCourse[40613:2545547] _任务1_<NSThread: 0x600001d50000>{number = 7, name = (null)}
2022-08-20 20:17:54.554155+0800 YDBasicPublicCourse[40613:2545542] _任务3_<NSThread: 0x600001d4c840>{number = 4, name = (null)}
2022-08-20 20:17:54.554155+0800 YDBasicPublicCourse[40613:2545549] _任务2_<NSThread: 0x600001d49b80>{number = 5, name = (null)}
2022-08-20 20:17:54.554456+0800 YDBasicPublicCourse[40613:2545547] _结束_<NSThread: 0x600001d50000>{number = 7, name = (null)}
*/

多线程优先级简单探索

// 顺序不可控,随机三条线程
- (void)priorityOne {
    dispatch_queue_t q1 = dispatch_queue_create("yd.com.q1", DISPATCH_QUEUE_SERIAL);
    dispatch_queue_t q2 = dispatch_queue_create("yd.com.q2", DISPATCH_QUEUE_SERIAL);
    dispatch_queue_t q3 = dispatch_queue_create("yd.com.q3", DISPATCH_QUEUE_SERIAL);
    
    dispatch_async(q1, ^{
        NSLog(@"_任务1_%@",[NSThread currentThread]);
    });
    
    dispatch_async(q2, ^{
        NSLog(@"_任务2_%@",[NSThread currentThread]);
    });
    
    dispatch_async(q3, ^{
        NSLog(@"_任务3_%@",[NSThread currentThread]);
    });
}
/*
运行结果1:
2022-08-20 20:30:50.081199+0800 YDBasicPublicCourse[40760:2562251] _任务2_<NSThread: 0x600001d03880>{number = 8, name = (null)}
2022-08-20 20:30:50.081463+0800 YDBasicPublicCourse[40760:2562249] _任务1_<NSThread: 0x600001d0d200>{number = 7, name = (null)}
2022-08-20 20:30:50.081667+0800 YDBasicPublicCourse[40760:2562250] _任务3_<NSThread: 0x600001d0c680>{number = 4, name = (null)}

运行结果2:
2022-08-20 20:32:18.688989+0800 YDBasicPublicCourse[40782:2564611] _任务1_<NSThread: 0x600003b86100>{number = 6, name = (null)}
2022-08-20 20:32:18.688989+0800 YDBasicPublicCourse[40782:2564617] _任务2_<NSThread: 0x600003b82640>{number = 5, name = (null)}
2022-08-20 20:32:18.688989+0800 YDBasicPublicCourse[40782:2564613] _任务3_<NSThread: 0x600003b94040>{number = 7, name = (null)}
*/
// 多线程优先级_玩玩就行,无序。
- (void)priorityTwo {
    dispatch_queue_t q1 = dispatch_queue_create("yd.com.q1", DISPATCH_QUEUE_SERIAL);
    dispatch_queue_t q2 = dispatch_queue_create("yd.com.q2", DISPATCH_QUEUE_SERIAL);
    dispatch_queue_t q3 = dispatch_queue_create("yd.com.q3", DISPATCH_QUEUE_SERIAL);
    
//    dispatch_set_target_queue(q1, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0));
//    dispatch_set_target_queue(q2, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0));
    dispatch_set_target_queue(q3, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0));
    
    dispatch_async(q1, ^{
        NSLog(@"_任务1_%@",[NSThread currentThread]);
    });
    
    dispatch_async(q2, ^{
        NSLog(@"_任务2_%@",[NSThread currentThread]);
    });
    
    dispatch_async(q3, ^{
        NSLog(@"_任务3_%@",[NSThread currentThread]);
    });
}
/*
运行结果1:
2022-08-20 20:46:03.886545+0800 YDBasicPublicCourse[40961:2583690] _任务1_<NSThread: 0x60000363f140>{number = 5, name = (null)}
2022-08-20 20:46:03.886545+0800 YDBasicPublicCourse[40961:2583692] _任务3_<NSThread: 0x600003639c40>{number = 6, name = (null)}
2022-08-20 20:46:03.886545+0800 YDBasicPublicCourse[40961:2583686] _任务2_<NSThread: 0x600003639b80>{number = 7, name = (null)}

运行结果2:
2022-08-20 20:47:20.251079+0800 YDBasicPublicCourse[40972:2585637] _任务3_<NSThread: 0x600002146700>{number = 6, name = (null)}
2022-08-20 20:47:20.251079+0800 YDBasicPublicCourse[40972:2585635] _任务1_<NSThread: 0x600002143cc0>{number = 5, name = (null)}
2022-08-20 20:47:20.251079+0800 YDBasicPublicCourse[40972:2585638] _任务2_<NSThread: 0x600002146b00>{number = 3, name = (null)}
*/
代码块
代码块
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342