首页 > Windows开发 > 详细

GCD API 总结(原创)

时间:2014-12-05 10:49:24      阅读:368      评论:0      收藏:0      [点我收藏+]

Dispatch Queue即 执行处理的等待队列。

存在两种Dispatch Queue,即

Serial Dispatch Queue 等待现在的处理

Concurrent Dispatch Queue 不等待现在的处理

 

1.dispatch_queue_create("com.gcd.test",Null)

创建Dispatch queue,

DISPATCH_QUEUE_SERIAL

DISPATCH_QUEUE_CONCURRENT

- (void)tsGCD

{

    dispatch_queue_t queue = dispatch_queue_create("com.gcd.test", DISPATCH_QUEUE_CONCURRENT);

    NSMutableArray *array = [[NSMutableArray alloc]init];

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

        dispatch_async(queue, ^{

            [array addObject:[NSNumber numberWithInt:i]];

        });

    }

    NSLog(@"done");

}

 

当为DISPATCH_QUEUE_CONCURRENT,数组AddObject非线程安全,同时访问容易引起问题,

gcdTest(2484,0x11395b000) malloc: *** error for object 0x7f9c8b802e00: pointer being freed was not allocated

*** set a breakpoint in malloc_error_break to debug

当为DISPATCH_QUEUE_SERIAL时,线程有序进行,不会引起并发问题。

GCD API 总结(原创)

原文:http://www.cnblogs.com/iOSJason/p/4146005.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!