ios 队列简单理解


-(IBAction)buttonQueueClick:(id)sender

{

   //创建一个队列queue1

    count = 0;

    queue1 = dispatch_queue_create("com.dispatch.writedb", DISPATCH_QUEUE_SERIAL);串行队列

    queue2= dispatch_queue_create("com.dispatch.concurrent", DISPATCH_QUEUE_CONCURRENT);并行队列

   for (int i = 0; i < 100; i ++ ) {

NSLog(@"i is:%ld",i);

        [self writeData];

    }

}


/**

 *  串行队列是先进先出顺序 block代码块谁先进去就先执行谁

 *  如果是 dispatch_async 已经执行完了100writeData block被加入到队列里面一个一个按顺序执行

 *  如果是 dispatch_sync  在同步执行会等待队列执行完毕再执行下一个循环操作

 */

- (void)writeData

{

//串行队列输出

    dispatch_async(queue1, ^{

        NSLog(@"count is %ld",count);

        count++;

    });

//并行行队列输出

    dispatch_async(queue2, ^{

        NSLog(@"count is %ld",count);

        count++;

    });


//主线程打输出 

并行队列同步执行中和串行的输出结果是一样的

//    dispatch_sync(queue1, ^{

//        NSLog(@"count is %ld",count);

//        count++;

//    });

 }


并行队列异步的打印结果:block被分发到多个线程去同时执行

出现这种原因是因为count++还没有执行完毕 block就已经被分发到子线程执行了 所以很多子线打印的结果是一样的



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值