DispatchQueues-创新互联

GCD(Grand Central Dispatch)的 dispatch queues 是一个实现多任务的很好的工具。Dispatch queues 让你能够方便的使用blocks,不管你想要去调用同步或异步。你可以实现几乎所有的以前你通过separate 的threads完成的任务。相对thread的code 而言,dispatch queues的优点是更简单和更有效率。

创新互联专注于肇州企业网站建设,自适应网站建设,商城开发。肇州网站建设公司,为肇州等地区提供建站服务。全流程按需网站建设,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务

这章节提供了dispatch queues的详细介绍,所有关于怎么样使用他们去执行普通任务的信息。

一、关于Dispatch Queues

Dispatch Queues 是一个简单实现实现异步和并发任务的方法。A dispatch queue is an object-like structures that manages the tasks you submit to it.所有的dispatch queue都是先进先出的数据结构

  Serial queues:每次只执行一个任务,并且先进先出。如果想通过这个实现并发可以创建多个serial queue 。但是如果希望实现许多并发则建议使用并发queues。

      dispatch_queue_t queue;

      queue =  dispatch_queue_create("com.example.MyQueue",NULL);

 Concurrent Queue :(global dispatch queue) 并发,但是仍然按加进队列的顺序启动。并发执行的任务在确定的线程中(被并发队列管理着的)。具体的执行的线程数由系统决定,是动态的。In IOS5 and later ,我们能够自己创建并发队列通过设定为DISPATCH_QUEUE_CONCURRENT 的类型

     系统提供了4个并发队列 是全局的,他们只是优先等级不同。因为是全局的,我们不在需要创建了。通过dispatch_get_global_queue

     dispatch_queue_t aQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0)

DISPATCH_QUEUE_PRIORITY_HIGH 和DISPATCH_QUEUE_PRIORITY_LOW ,DISPATCH_QUEUE_PRIORITY_BACKGROUND

    note:第二个参数以后在解释,现在我们只要传0得参数就行了。

Main dispatch queue :主队列是一个全局可获取在应用主线程中执行任务的的窜行队列。 通过run loop 将我们要执行的任务加进主线程。如果不是cocoa的应用,也不想特别的创建run loop ,你必须通过dispatch_main方法

  dispatch_get_main_queue.

二,获取运动时的队列

你可以通过dispatch_get_current_queue获取运行时的队列:

1.

dispatch_queue_t currentQueue = dispatch_get_current_queue();

如果在队列执行任务中调用,返回执行此任务的队列;如果在主线程中调用,将返回主队列;如果在一般线程(非主线程线程非队列执行任务)中调用,返回DISPATCH_QUEUE_PRIORITY_DEFAULT全局队列。

三、在队列中运行任务

异步

dispatch_async(aQueue,^{

  //do somethings

});

同步

dispatch_sync(aQueue,^{

});

四、Dispatch Queue的内存管理

除了系统定义的Dispatch Queue,我们自定义的Dispatch Queue需要手动的管理它的内存。

dispatch_retain dispatch_release

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网页标题:DispatchQueues-创新互联
标题URL:http://ybzwz.com/article/dhehss.html