iOS讲解迷惑深入浅出之GCD利用屏障模拟玩家进入游戏读取数据

来源:互联网 发布:linux rpm yum 编辑:程序博客网 时间:2024/06/08 12:33

利用队列进行游戏模拟

需求:一共四个玩家一起进入游戏, 当所有人都进入游戏的时候开始读取数据

思路:

     1. 选取并行队列

     2. 如何实现特殊要求,把并行队列用屏障隔开

        屏障的作用:把队列分成上下部分开执行

<span style="font-size:14px;">#pragma mark - 模拟游戏开始的线程操作(利用屏障 dispatch_barrier_async() )- (void)gameStart{    // 需求: 一共四个玩家一起进入游戏, 当所有人都进入游戏的时候开始读取数据        /* 思路:     1. 选取并行队列     2. 如何实现特殊要求, 把并行队列用屏障隔开        屏障的作用: 把队列分成上下部分开执行    */        // 创建自定义并行队列 // 参数1标识符随意起    dispatch_queue_t myQueue = dispatch_queue_create("com.nyl.ganmeQueue", DISPATCH_QUEUE_CONCURRENT);        // 添加任务1    dispatch_async(myQueue, ^{                    NSLog(@"玩家1 进入游戏");    });            // 添加任务2    dispatch_async(myQueue, ^{                NSLog(@"玩家2 进入游戏");    });            // 添加任务3    dispatch_async(myQueue, ^{                NSLog(@"玩家3 进入游戏");    });        // 添加屏障⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️    dispatch_barrier_async(myQueue, ^{        NSLog(@"都进入了, 可以开始, 读取玩家信息了");    });                // 添加读取信息的任务1    dispatch_async(myQueue, ^{                  NSLog(@"玩家1 读取游戏!!");      });            // 添加读取信息的任务2    dispatch_async(myQueue, ^{               NSLog(@"玩家2 读取游戏!!");    });            // 添加读取信息的任务3    dispatch_async(myQueue, ^{                NSLog(@"玩家3 读取游戏!!");    });            //                                              
0 0
原创粉丝点击