iOS GCD(2)

来源:未知 责任编辑:责任编辑 发表时间:2014-01-26 21:59 点击:

为了避免多线程编程的问题之一---数据竞争,就可以使用Serial Dispatch Queue。

当想并行执行且不发生数据竞争等问题时就应该使用Concurrent Dispatch Queue。


[cpp]
//以下代码是两种生成Serial Dispatch Queue的方式  
    dispatch_queue_t mySerialDispatchQueue = dispatch_queue_create("cn.edu.scnu.mySerialDispatchQueue", NULL); 
    //        dispatch_queue_t mySerialDispatchQueue = dispatch_queue_create("cn.edu.scnu.mySerialDispatchQueue", DISPATCH_QUEUE_SERIAL); 

//以下代码是两种生成Serial Dispatch Queue的方式
    dispatch_queue_t mySerialDispatchQueue = dispatch_queue_create("cn.edu.scnu.mySerialDispatchQueue", NULL);
    //        dispatch_queue_t mySerialDispatchQueue = dispatch_queue_create("cn.edu.scnu.mySerialDispatchQueue", DISPATCH_QUEUE_SERIAL);


dispatch_queue_create,该方法中的第一个参数指定SerialDispatchQueue的名称,DispatchQueue的名称推荐使用应用程序ID之中逆序全程域名,第二个参数指定为NULL(或者DISPATCH_QUEUE_SERIAL)时即表示生成的是Serial Dispatch Queue,指定为DISPATCH_QUEUE_CONCURRENT时即表示生成的是Concurrent Dispatch Queue

 


[cpp]
//以下代码生成ConcurrentDispatchQueue  
    dispatch_queue_t myConcurrentDispatchQueue = dispatch_queue_create("cn.edu.scnu.myConcurrentDispatchQueue", DISPATCH_QUEUE_CONCURRENT); 
 
    dispatch_async(myConcurrentDispatchQueue, ^{ 
        NSLog(@"block on my ConcurrentDispatchQueue"); 
    }); 

//以下代码生成ConcurrentDispatchQueue
    dispatch_queue_t myConcurrentDispatchQueue = dispatch_queue_create("cn.edu.scnu.myConcurrentDispatchQueue", DISPATCH_QUEUE_CONCURRENT);

    dispatch_async(myConcurrentDispatchQueue, ^{
        NSLog(@"block on my ConcurrentDispatchQueue");
    });


2、MainDispatch Queue 和 Global Dispatch Queue


实际上不用特意生成DispatchQueue,系统也会提供几个给我们,就是Main DispatchQueue 和 Global Dispatch Queue

 Main Dispatch Queue就是主线程中执行的Dispatch Queue,因为主线程只有一个,所以Main DispatchQueue自然就是 Serial Dispatch Queue


[cpp]
//获取Main Dispatch Queue  
    dispatch_queue_t mainDispatchQueue = dispatch_get_main_queue(); 

//获取Main Dispatch Queue
    dispatch_queue_t mainDispatchQueue = dispatch_get_main_queue();


GlobalDispatch Queue是所有应用程序都能够使用的Concurrent Dispatch Queue,没有必要通过dispatch_queue_create方法逐个生成Concurrent Dispatch Queue,只要获

取GlobalDispatch Queue使用即可。

 Global Dispatch Queue有四个优先级:High Priority,Default Priority,Low Priority,Background Priority

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • Lexical or Preprocessor Issue 'xxx.h
  • ios学习笔记(二)xcode 4.3.2下实现基本交互
  • ios版本的helloworld
  • iphone(object-c) 内存管理(3) 有效的内存管理 前半部分
  • ios学习笔记(一)xcode 4.3.2下创建第一个ios项目
  • UITableView一些方法
  • IOS类似iphone通讯录TableView的完整demo【附源码】
  • [iPhone中级]iPhone团购信息客户端的开发 (二)
  • iphone(object-c)内存管理(1)
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1