线程间通信

2020-07-06  本文已影响0人  Jean_Lina
/**
 * 线程间通信
 */
- (void)communication {
    //获取全局并发队列
    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    //获取主队列
    dispatch_queue_t mainQueue = dispatch_get_main_queue();
    dispatch_async(queue, ^{
        //异步追加任务
        for (int i = 0; i < 2; ++i) {
            //模拟耗时操作
            [NSThread sleepForTimeInterval:2];
            //打印当前线程
            NSLog(@"1---%@",[NSThread currentThread]);
        }
        //回到主线程
        dispatch_async(mainQueue, ^{
            // 追加在主线程中执行的任务
            //模拟耗时操作
            [NSThread sleepForTimeInterval:2];              
            //打印当前线程
            NSLog(@"2---%@",[NSThread currentThread]);
        });
    });
}
运行结果:
2020-07-06 21:24:23.527480+0800 GCD[16849:3323509] 1---<NSThread: 0x600002b657c0>{number = 7, name = (null)}
2020-07-06 21:24:25.531328+0800 GCD[16849:3323509] 1---<NSThread: 0x600002b657c0>{number = 7, name = (null)}
2020-07-06 21:24:27.531902+0800 GCD[16849:3323350] 2---<NSThread: 0x600002b055c0>{number = 1, name = main}
上一篇 下一篇

猜你喜欢

热点阅读