码迷,mamicode.com
首页 > Windows程序 > 详细

GCD API 总结(原创)

时间:2014-12-05 10:51:32      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:style   ar   sp   for   strong   on   问题   log   bs   

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 总结(原创)

标签:style   ar   sp   for   strong   on   问题   log   bs   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!