iOS多线程研究(四)

线程间通讯

这里是一张高清无码大图,如果直接走下载,然后加载UI,整个程序就会有堵塞。 解决办法就是开启异步线程,进行下载,最后回到UI更新

  • 开启异步线程
  • 异步下载 ----> 回到主线程
  • 更新UI

面试题(五):atomic与nonatomic 的区别

  • nonatomic 非原子属性
  • atomic 原子属性(线程安全),针对多线程设计的,默认值
    • 保证同一时间只有一个线程能够写入(但是同一个时间多个线程都可以取值)
    • atomic 本身就有一把锁(自旋锁)
    • 单写多读:单个线程写入,多个线程可以读取
  • atomic:线程安全,需要消耗大量的资源
  • nonatomic:非线程安全,适合内存小的移动设备

iOS 开发的建议

  • 所有属性都声明为 nonatomic
  • 尽量避免多线程抢夺同一块资源
  • 尽量将加锁、资源抢夺的业务逻辑交给服务器端处理,减小移动客户端的压力

面试题(六):线程和runloop的关系

1:runloop与线程是一一对应的,一个runloop对应一个核心的线程,为什么说是核心的,是因为runloop是可以嵌套的,但是核心的只能有一个,他们的关系保存在一个全局的字典里。 2:runloop是来管理线程的,当线程的runloop被开启后,线程会在执行完任务后进入休眠状态,有了任务就会被唤醒去执行任务。 3:runloop在第一次获取时被创建,在线程结束时被销毁。 4:对于主线程来说,runloop在程序一启动就默认创建好了。 5:对于子线程来说,runloop是懒加载的,只有当我们使用的时候才会创建,所以在子线程用定时器要注意:确保子线程的runloop被创建,不然定时器不会回调。

这是多线程系列的第四篇文章,下篇会继续探究多线程, 敬请期待...

本文分享自微信公众号 - HelloCode开发者学习平台(HellCode_CC)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-08-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 多线程学习,从未如此容易

    从Apple官网可以看出,我们的主线程在iOS下是 1MB, 在OS X下是 8MB 。如果我们开辟的新的线程则是 512KB

    CC老师
  • 面试独门技巧,手刃"面试官"

    这个代码主要放在主线程,就会严重影响程序的性能,造成堵塞,影响用户体验.这个时候我们的多线程就发挥它的作用了

    CC老师
  • RunLoop与线程的关系是非常“狗血的”,你知道么?

    没有RunLoop, 线程可能会"死"; 线程“死”了,RunLoop会停止运行。

    CC老师
  • 一、聊聊并发—线程安全到底在说什么

    并发编程的目的是为了让程序运行得更快,提高程序的响应速度,虽然我们希望通过多线程执行任务让程序运行得更快,但是同时也会面临非常多的挑战,比如像线程安全问题、线程...

    volador
  • 史上最全Java多线程面试题及答案

    多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域。所以,学好多线程并发编程对Java程序员来来说极其重要的。 下面小编整理了60道最常见的Ja...

    Java技术栈
  • 单例模式的六种花式写法

    单例模式是一种常用的设计模式,其定义是单例对象类只允许一个实例存在,实现的核心原理是构造函数私有化。使用单例可以节省内存开销,也是现实场景中的一种映射,比如一台...

    蜻蜓队长
  • 用户线程与守护线程

    在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) 

    大学里的混子
  • 技术干货| 腾讯云TDSQL多源同步架构与特性详解

    吴夏,腾讯云TDSQL研发工程师,目前主要负责日志解析复制、数据传输同步模块的开发工作。

    腾讯云数据库 TencentDB
  • 深入理解JVM(③)再谈线程安全

    我们在编写程序的时候,一般是有个顺序的,就是先实现再优化,并不是所有的牛P程序都是一次就写出来的,肯定都是不断的优化完善来持续实现的。因此我们在考虑实现高并发程...

    纪莫
  • python 多线程重启

    py3study

扫码关注云+社区

领取腾讯云代金券