Swift学习3 线程

 队列

  • 串行队列
  • 并行队列
// 主队列异步
DispatchQueue.main.async {
    print("main async \(Thread.current)")
}
// 
DispatchQueue.global().async {
    print("global() async \(Thread.current)")
}
// 串行队列同步
let serialQueue = DispatchQueue(label: "squeue")
serialQueue.sync {
    print("serialQueue sync \(Thread.current)")
}
// 串行队列异步
serialQueue.async {
    print("serialQueue async \(Thread.current)")
}
// 并行队列异步
let parallQueue = DispatchQueue(label: "pqueue", attributes: .concurrent)
parallQueue.async {
    print("parallQueue async \(Thread.current)")
}
  • 同步执行。不开启新的线程
  • 异步执行。开启新的线程

串行同步

  • 同步执行,所以不创建新的线程,在主线程中执行。
  • 串行队列,所以队列的任务一个接一个地执行

串行异步

  • 因为是异步执行,所以创建了新的线程。
  • 因为是串行队列,所以队列中的任务一个接一个执行。

并行同步

无意义,无法体现并行

并行异步

  • 因为异步执行,所以创建了新的线程。注意创建多个线程
  • 因为并发队列,异步执行时体现其并发性,任务之间交替着同时执行
// 延迟执行
let delay = DispatchTime.now() + DispatchTimeInterval.seconds(5)
DispatchQueue.main.asyncAfter(deadline: delay) {
    print("main async after \(Thread.current)")
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值