iOS 同步与异步,串行与并行

-(void)test

{

    //同步串行队列 不开启线程 顺序执行

    dispatch_queue_t t1 = dispatch_queue_create("com.ttt", DISPATCH_QUEUE_SERIAL);

    dispatch_sync(t1, ^{

        NSLog(@"1 = %@",[NSThread currentThread]);

    });

    dispatch_sync(t1, ^{

        NSLog(@"2 = %@",[NSThread currentThread]);

    });

    dispatch_sync(t1, ^{

        NSLog(@"3 = %@",[NSThread currentThread]);

    });


    //同步并行队列 不开启线程 顺序执行

    dispatch_queue_t t2 = dispatch_queue_create("com.ttt", DISPATCH_QUEUE_CONCURRENT);

    dispatch_sync(t2, ^{

        NSLog(@"1 = %@",[NSThread currentThread]);

    });

    dispatch_sync(t2, ^{

        NSLog(@"2 = %@",[NSThread currentThread]);

    });

    dispatch_sync(t2, ^{

        NSLog(@"3 = %@",[NSThread currentThread]);

    });


    //异步串行队列 开启一个线程,且只开启一个,顺序执行

    dispatch_queue_t t3 = dispatch_queue_create("com.ttt", DISPATCH_QUEUE_SERIAL);

    dispatch_async(t3, ^{

        NSLog(@"1 = %@",[NSThread currentThread]);

    });

    dispatch_async(t3, ^{

        NSLog(@"2 = %@",[NSThread currentThread]);

    });

    dispatch_async(t3, ^{

        NSLog(@"3 = %@",[NSThread currentThread]);

    });


    //异步并行队列,开启多个线程,不按顺序执行

    dispatch_queue_t t4 = dispatch_queue_create("com.ttt", DISPATCH_QUEUE_CONCURRENT);

    dispatch_async(t4, ^{

        NSLog(@"1 = %@",[NSThread currentThread]);

    });

    dispatch_async(t4, ^{

        NSLog(@"2 = %@",[NSThread currentThread]);

    });

    dispatch_async(t4, ^{

        NSLog(@"3 = %@",[NSThread currentThread]);

    });

}


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容