当前位置: 首页 > news >正文

建筑效果图网站有哪些哪些网站做渣土车租恁

建筑效果图网站有哪些,哪些网站做渣土车租恁,用html5做网站的优点,房地产网站怎么推广iOS 常用有三种线程管理方式#xff0c;分别是 NSThread、GCD 与 NSOperation#xff0c;现在我们先来了解一下其中的 GCD 串行与并行针对的是任务队列#xff0c;而同步与异步#xff0c;针对的则是线程。 Serial Queue Sync 序列执行同步 Serial Queue Async 序列执…iOS 常用有三种线程管理方式分别是 NSThread、GCD 与 NSOperation现在我们先来了解一下其中的 GCD 串行与并行针对的是任务队列而同步与异步针对的则是线程。 Serial Queue Sync 序列执行同步 Serial Queue Async 序列执行 异步 按顺序 Concurrent Queue Sync 并发 同步 按顺序 Concurrent Queue Async 并发 异步 真正多线程不按顺序 自定义串行队列有能力启动主线程和后台线程只能启动一个后台线程不会发生死锁。同步任务会自动安排在主线程执行遇到异步任务自动安排在后台线程执行所以不会死锁。 DispatchWorkItem 可添加 item 到队列中 //1. 只带尾随闭包 let item1 DispatchWorkItem {print(item1) }//2. 指定qos执行优先级或flags特殊行为标记 let item2 DispatchWorkItem(qos: .userInteractive, flags: .barrier) {print(item2) }DispatchQueue Main queue (串行队列) 仅能运行在主线程上 let mainQueue DispatchQueue.mainGlobal queue并行队列 Concurrent let globalQueue DispatchQueue.global()Custom queue默认串行 //串行队列label名字随便取 let serialQueue DispatchQueue(label: test)//并行队列 let concurrentQueue DispatchQueue(label: test, attributes: .concurrent)添加任务 异步 let mainQueue DispatchQueue.main mainQueue.async(execute: item1)let globalQueue DispatchQueue.global() globalQueue.async(execute: item1)let serialQueue DispatchQueue(label: serial) serialQueue.async(execute: item1)let concurrentQueue DispatchQueue(label: concurrent, attributes: .concurrent) concurrentQueue.async(execute: item1)同步 let mainQueue DispatchQueue.main mainQueue.sync(execute: item1) // 必定引起死锁let globalQueue DispatchQueue.global() globalQueue.sync(execute: item1)let serialQueue DispatchQueue(label: serial) serialQueue.sync(execute: item1)let concurrentQueue DispatchQueue(label: concurrent, attributes: .concurrent) concurrentQueue.sync(execute: item1)队列死锁而不是线程死锁。主队列添加同步任务造成死锁的根本原因 主队列只能运行在主线程。主队列没有本事开启后台线程去干别的事情。主队列一旦混入同步任务就会跟已经存在的异步任务相互等待导致死锁。 DispatchGroup 可把多个任务放到 group方便管理。 当组内所有任务执行完成GCD API 发送相应的通知。 notify(): 不阻塞当前线程wait()阻塞当前线程 自定义串行队列一个异步或同步任务A嵌套另一个同步任务B会引起死锁。 A、B任务等效为A1 - B - A2。 // 当前任务 let queue DispatchQueue.init(label: name) queue.sync {// 死锁。同步要等外层执行后这里才能执行而外层的执行需要这里先执行完。queue.sync {print(Thread.current) // 同步任务} // 当前任务print(Thread.current) }并行队列添加同步任务不会死锁因为同步任务被安排在主线程执行异步任务被安排在后台线程执行。 所有的同步任务最终都要安排到主线程运行主线程运行长耗时任务会导致界面严重卡顿。 // 这两种方式都会使界面卡顿15s override func viewDidAppear(_ animated: Bool) {//1. 全局队列执行同步任务DispatchQueue.global().sync {sleep(15)//当前线程休眠15秒}//2. 主队列执行异步任务DispatchQueue.main.async {sleep(15)//当前线程休眠15秒} }GCD 正确做法A、B都定义成异步任务在并行队列中嵌套异步任务最后切换到主队列去刷新UI let queue DispatchQueue(label: com.apple.request, attributes: .concurrent)//异步执行 queue.async {print(开始请求数据 \(Date()) thread: \(Thread.current))sleep(10)//模拟网络请求print(数据请求完成 \(Date()) thread: \(Thread.current))//异步执行queue.async {print(开始处理数据 \(Date()) thread: \(Thread.current))sleep(5)//模拟数据处理print(数据处理完成 \(Date()) thread: \(Thread.current))//切换到主队列刷新UIDispatchQueue.main.async {print(UI刷新成功 \(Date()) thread: \(Thread.current))}} } DispatchQueue.main 自动生成的主队列对象可获取 DispatchQueue.global DispatchQueue() 默认是序列队列 DispatchQueue(.concurrent) 并发队列 同步任务都会被分配到主线程。 global、自定义 serial 队列、并发队列都有能力把异步任务分配到子线程。serial 只能开启一个子线程做并发任务足够了。 同队列中同步任务会等待前方任务执行完再执行。先来先服务 number 是队列标识name 是线程标识使用 serial 安排同步任务和异步任务会将同步的分给主线程把异步的分给后台某个匿名线程。 let queue DispatchQueue.init(label: hei) queue.async { print(Thread.current) }queue.sync {queue.async {print(Thread.current) } // 虽然比下面的 print 早但是把这个异步任务发到另外线程这个过程需要时间。print(Thread.current) }queue.async { print(Thread.current) } queue.sync {print(Thread.current) }// 结果 // NSThread: 0x7fde7c806950{number 5, name (null)} // _NSMainThread: 0x7fde7cb06570{number 1, name main} // NSThread: 0x7fde7c806950{number 5, name (null)} // NSThread: 0x7fde7c806950{number 5, name (null)} // _NSMainThread: 0x7fde7cb06570{number 1, name main}如果 serial 队列嵌套同步任务将会死锁。 // 当前任务 let queue DispatchQueue.init(label: name) queue.sync {// 死锁。同步要等外层执行后这里才能执行而外层的执行需要这里先执行完。queue.sync {print(Thread.current) // 同步任务} // 当前任务print(Thread.current) }
http://www.zqtcl.cn/news/999269/

相关文章:

  • 怎样做当地网站推广平顶山车祸最新新闻事件
  • 重庆网站制作1000客户营销
  • 视频播放网站 模板潍坊网站建设首荐创美网络
  • 网站静态页面模板网页设计案例代码
  • 网站开发的ie兼容做到9网站开发具体问题
  • 企业建站业务还能做吗园林景观网站模板
  • 建筑招聘网站有哪些电商商城app制作开发
  • 做网站开发 用什么在进行网站设计时
  • 21dove谁做的的网站新媒体营销论文
  • 做电影网站配什么公众号网站新闻发布系统模板
  • 网站风格发展趋势wordpress悬浮音乐插件
  • 做网站前期费用新注册公司网站建设
  • 建站平台在线提交表格功能检测站点是否使用wordpress
  • 谁能做网站开发免费软件看电视剧
  • 深圳的网站建设网站建设网页设计做网站
  • 广州网站建设网页设计贵阳网站建设宏思锐达
  • 洪栾单页网站建设象山县城乡和住房建设局网站
  • 网站留言发送到邮箱潍坊商城网站建设
  • 四川省的住房和城乡建设厅网站首页产品设计是冷门专业吗
  • 北仑建设银行网站网站设计 导航条
  • 如何做网站宣传片单位做网站费用怎么记账
  • 西安网站建设现状购物app开发
  • 2019年做网站还有前景吗手机制作表格教程
  • 校园网站html模板南昌网站建设优化
  • 网站的建立目的来宾网站优化
  • 建设国家游戏网站网站建设规范方案
  • 做网站价位wordpress tag 列表
  • 网站建设 李奥贝纳百度软文推广公司
  • 网站建设流程平台企业微信开发者文档
  • 唐山建设网站的网站青海网站建设企业