iOS

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

2019-12-06  本文已影响0人  雨后天_

-(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]);

    });

}

上一篇 下一篇

猜你喜欢

热点阅读