首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

GCD - Dispatch Se地图hore

2014-01-03 
GCD - Dispatch Semaphore?先看代码dispatch_queue_t queue dispatch_get_global_queue(DISPATCH_QUEUE_

GCD - Dispatch Semaphore

?

先看代码

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);    NSMutableArray *array = [[NSMutableArray alloc]init];    dispatch_semaphore_t semaphore = dispatch_semaphore_create(1);//信号量为1            for (int i = 0; i != 10000; ++i)        {            dispatch_async(queue, ^{                dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);//等待返回值为1或者大于1,获得执行权利后信号量-1               [array addObject:[NSNumber numberWithInt:i]];                dispatch_semaphore_signal(semaphore);//信号量+1            });        }

?百分之百不崩溃,semaphore的值表示由多少线程可以操作,根据我们的设置,永远只有一个线程可以操作数组。

热点排行