美文网首页
同步执行 + 串行队列

同步执行 + 串行队列

作者: Jean_Lina | 来源:发表于2020-07-06 20:50 被阅读0次
/**
 * 同步执行 + 串行队列
 * 特点:不会开启新线程,在当前线程执行任务。任务是串行的,执行完一个任务,再执行下一个任务。
 */
- (void)syncSerial {
    //打印当前线程
    NSLog(@"currentThread---%@",[NSThread currentThread]);
    NSLog(@"syncSerial---begin");
    dispatch_queue_t queue = dispatch_queue_create("net.bujige.testQueue", DISPATCH_QUEUE_SERIAL);
    dispatch_sync(queue, ^{
        // 追加任务1
        for (int i = 0; i < 2; ++i) {
            //模拟耗时操作
            [NSThread sleepForTimeInterval:2];
            //打印当前线程
            NSLog(@"1---%@",[NSThread currentThread]);
        }
    });
    dispatch_sync(queue, ^{
        // 追加任务2
        for (int i = 0; i < 2; ++i) {
            //模拟耗时操作
            [NSThread sleepForTimeInterval:2];
            //打印当前线程
            NSLog(@"2---%@",[NSThread currentThread]);
        }
    });
    dispatch_sync(queue, ^{
        // 追加任务3
        for (int i = 0; i < 2; ++i) {
            //模拟耗时操作
            [NSThread sleepForTimeInterval:2];
            //打印当前线程
            NSLog(@"3---%@",[NSThread currentThread]);
        }
    });
    NSLog(@"syncSerial---end");
}
运行结果:
2020-07-06 20:49:09.521419+0800 GCD[16131:3095672] currentThread---<NSThread: 0x60000185a140>{number = 1, name = main}
2020-07-06 20:49:09.521539+0800 GCD[16131:3095672] syncSerial---begin
2020-07-06 20:49:11.522312+0800 GCD[16131:3095672] 1---<NSThread: 0x60000185a140>{number = 1, name = main}
2020-07-06 20:49:13.523524+0800 GCD[16131:3095672] 1---<NSThread: 0x60000185a140>{number = 1, name = main}
2020-07-06 20:49:15.524799+0800 GCD[16131:3095672] 2---<NSThread: 0x60000185a140>{number = 1, name = main}
2020-07-06 20:49:17.525834+0800 GCD[16131:3095672] 2---<NSThread: 0x60000185a140>{number = 1, name = main}
2020-07-06 20:49:19.526351+0800 GCD[16131:3095672] 3---<NSThread: 0x60000185a140>{number = 1, name = main}
2020-07-06 20:49:21.527517+0800 GCD[16131:3095672] 3---<NSThread: 0x60000185a140>{number = 1, name = main}
2020-07-06 20:49:21.527653+0800 GCD[16131:3095672] syncSerial---end

相关文章

  • iOS GCD随记(一)任务/队列组合

    1.同步执行+串行队列2.同步执行+并行队列3.异步执行+串行队列4.异步执行+并行队列5.同步执行+主队列6.异...

  • iOS GCD笔记

    串行队列 并发队列 主队列 全局并发队列 同步执行 异步执行 同步+并发队列 = 没有开启新线程,串行执行任务 s...

  • 关于多线程GCD 串行/并行、同步/异步

    一、GCD串行/并行队列创建 串行队列: 并行队列: 二、GCD串行/并行队列同步/异步执行 执行内容1: 执行结...

  • iOSIN-GCD

    队列和同步异步 区别并行队列串行队列主队列同步(sync)没有开启新线程,串行执行任务没有开启新线程,串行执行任务...

  • iOS - 多线程(二) GCD讲解

    目录: 1.GCD简介2.串行队列 + 同步执行3.串行队列 + 异步执行4.并发队列 + 同步执行5.并发队列 ...

  • iOS开发-队列和同步异步执行的结果分析

    多线程中的队列有:串行队列,并发队列,全局队列(并发),主队列(串行)。 执行的方法有:同步执行和异步执行。 提到...

  • iOS多线程同步异步、串行并发的个人剖析(GCD)

    先来说一个队列和任务: 队列分为串行和并行 任务的执行分为同步和异步 这两两组合就成为了串行队列同步执行,串行队列...

  • iOS多线程同步异步、串行并发的剖析

    先来说一个队列和任务: 队列分为串行和并行 任务的执行分为同步和异步 这两两组合就成为了串行队列同步执行,串行队列...

  • 队列dispatch_queue的使用

    队列分为:串行队列、并发队列和主队列,主队列也叫特殊串行队列,是GCD自带的。 任务的执行分为:同步执行和异步执行...

  • GCD小总结

    单例模式 串行队列同步/异步执行任务 并发队列同步/异步执行任务 队列组 延时执行 barrier

网友评论

      本文标题:同步执行 + 串行队列

      本文链接:https://www.haomeiwen.com/subject/pingqktx.html