import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
//线程间通信
DispatchQueue.global(priority: DispatchQueue.GlobalQueuePriority.default).async { () -> Void in
print("子线程中执行任务")
DispatchQueue.main.async(execute: { () -> Void in
print("回到主线程")
})
}
//线程延迟1秒执行
let second:Double = 1
let dtime = DispatchTime.now() + Double(Int64(second * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC)
//创建主线程
DispatchQueue.main.asyncAfter(deadline: dtime, execute: {() -> Void in
print("主线程刷新UI")
})
//3s后会开启一个新的线程执行队列中的任务
DispatchQueue.global(priority: DispatchQueue.GlobalQueuePriority.default).asyncAfter(deadline: dtime) { () -> Void in
print("开启一个新的线程")
}
//获取全局并发队列
let queue = DispatchQueue.global(priority: DispatchQueue.GlobalQueuePriority.default)
//将任务添加到队列中 并发执行
queue.async(execute: {() -> Void in
print("任务一")
self.makeQueue()
})
queue.async(execute: {() -> Void in
print("任务二")
})
//暂停一个队列
//dispatch_suspend(queue)
//继续队列
//dispatch_resume(queue)
queue.async(execute: {() -> Void in
print("任务三")
})
}
func makeQueue(){
//创建串行队列
let serialQueue = DispatchQueue(label: "dispatch_queue_name", attributes: [])
//将任务添加到队列中 一个任务执行完成后再执行另外一个任务
serialQueue.async(execute: {() -> Void in
print("任务1")
})
serialQueue.async(execute: {() -> Void in
print("任务2")
})
serialQueue.async(execute: {() -> Void in
print("任务3")
self.makenotify()
})
}
func makenotify(){
//创建一个队列组
let group = DispatchGroup()
let groupQueue = DispatchQueue.global(priority: DispatchQueue.GlobalQueuePriority.default)
groupQueue.async(group: group, execute: {() -> Void in
print("1")
})
groupQueue.async(group: group, execute: {() -> Void in
print("2")
})
groupQueue.async(group: group, execute: {() -> Void in
print("3")
})
group.notify(queue: groupQueue, execute: {() -> Void in
print("任务执行完毕")
})
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}