Swift多线程编程

//MARK:后台执行

dispatch_async(dispatch_get_global_queue(0,0), { () ->Void in

})

//MARK:主线程执行

dispatch_async(dispatch_get_main_queue(), { () ->Void in

})

//MARK:一次性执行

var once =dispatch_once_t()

dispatch_once(&once) { () ->Void in

}

//MARK:延迟两秒执行

let delaySecends:UInt64 = 2

let popTime = dispatch_time(DISPATCH_TIME_NOW,Int64(delaySecends *NSEC_PER_SEC))

dispatch_after(popTime,dispatch_get_main_queue()) { () ->Void in

}

//MARK:自定义线程

let myqueue = dispatch_queue_create("abcdef",nil)

dispatch_async(myqueue, { () ->Void in

})

//MARK:并发执行

var queueGroup = dispatch_group_create()

dispatch_group_async(queueGroup,dispatch_get_global_queue(0,0)) { () ->Void in

//线程1

}

dispatch_group_async(queueGroup,dispatch_get_global_queue(0,0)) { () ->Void in

//线程2

}

dispatch_group_notify(queueGroup,dispatch_get_global_queue(0,0)) { () ->Void in

//汇总结果

}

Example1:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), {

       //需要长时间处理的代码

       dispatch_async(dispatch_get_main_queue(), {

            //需要主线程执行的代码

       })

})

Example2:如果运行一系列的任务,希望当任务全部结束后运行另一个特殊的任务这种场景就是用下面的写法

let queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)

let group = dispatch_group_create()

for(id obj in array)

dispatch_group_async(group, queue, {

self.doWork(obj)

})

dispatch_group_notify(group, queue, {

self.doneWork

})

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • NSThread 第一种:通过NSThread的对象方法 NSThread *thread = [[NSThrea...
    攻城狮GG阅读 862评论 0 3
  • 一、前言 上一篇文章iOS多线程浅汇-原理篇中整理了一些有关多线程的基本概念。本篇博文介绍的是iOS中常用的几个多...
    nuclear阅读 2,080评论 6 18
  • 一、前言 本篇博文介绍的是iOS中常用的几个多线程技术: NSThread GCD NSOperation 由于a...
    和珏猫阅读 592评论 0 1
  • 在这篇文章中,我将为你整理一下 iOS 开发中几种多线程方案,以及其使用方法和注意事项。当然也会给出几种多线程的案...
    张战威ican阅读 633评论 0 0
  • 这个世界真的很残酷!有太多事想倾诉,可是又不愿写出来,因为没写一个字心就会疼一下。
    侃Kris阅读 191评论 0 0