第一、dispatch_queue_create 用于创建用户线程队列。可以创建Serial Dispatch Queue 和Concurrent Dispatch Queue两种队列,Serial Dispatch Queue是等待现在正在执行的Queue,即串行执行
Concurrent Dispatch Queue不等待现在正在执行中的Queue,即并行队列
1、创建Serial Dispatch Queue
dispatch_queue_t serialQueue=dispatch_queue_create("hello1", NULL);
因为是串行执行,因此创建一个Serial Dispatch Queue就得创建一个线程,如果线程太多,占用太多内存,上下文切换会使系统资源浪费,一次应该严格控制创建Serial Dispatch Queue的数目。
在实际使用过程中,多个线程更新相同的数据资源导致数据竞争时使用此类型的queue
2、创建Concurrent Dispatch Queue
dispatch_queue_t concurrentQueue=dispatch_queue_create("hello2", DISPATCH_QUEUE_CONCURRENT);
如果想并行执行并且不产生数据竞争的问题时,使用Concurrent Dispatch Queue,在iOS和mac系统中,XNU控制线程的创建,会结束掉不在需要的线程,可以很好地管理执行多个并行执行的线程
3、通过dispatch_queue_create常见的queue,因为不支持ARC,所以必须通过dispatch_release释放,如果要保留则采用dispatch_retain,
创建Dispatch Queue