Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >iOS多线程研究(四)

iOS多线程研究(四)

作者头像
CC老师
发布于 2019-01-23 07:46:37
发布于 2019-01-23 07:46:37
4960
举报

线程间通讯

这里是一张高清无码大图,如果直接走下载,然后加载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被创建,不然定时器不会回调。

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-08-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 HelloCode开发者学习平台 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
阿里、字节:一套高效的iOS面试题( 多线程 GCD底层原理篇)
dispatch_group_create() + dispatch_group_wait()
会写bug的程序员
2020/06/18
5K0
阿里、字节:一套高效的iOS面试题( 多线程 GCD底层原理篇)
iOS多线程:『NSOperation、NSOperationQueue』详尽总结
本文首发于我的个人博客:『不羁阁』 文章链接:传送门 本文更新时间:2018年03月06日17:27:55 笔者对之前写的原文重新整理,修改了部分内容,又增加了许多关于 NSOperation、NSOperationQueue 的知识及用法,希望大家喜欢。 本文用来介绍 iOS 多线程中 NSOperation、NSOperationQueue 的相关知识以及使用方法。 通过本文,您将了解到: NSOperation、NSOperationQueue 简介、操作和操作队列、使用步骤和基本使用
程序员充电站
2018/05/31
1K0
iOS多线程:『RunLoop』详尽总结RunLoop
本文首发于我的个人博客:『不羁阁』 https://bujige.net 文章链接:https://bujige.net/blog/iOS-Complete-learning-RunLoop.html 文中可能有部分错误,博主过两天整理并更新。 RunLoop 文章目录 RunLoop简介 1.1 什么是RunLoop? 1.2 RunLoop和线程 1.3 默认情况下主线程的RunLoop原理 RunLoop相关类 2.1 CFRunLoopRef 2.2 CFRunLoopModeRe
程序员充电站
2018/05/31
2.2K0
iOS - 多线程(一):初识
安全+效率:因为 UIKit 框架不是线程安全的框架,当在多个线程进行 UI 操作,有可能出现资源抢夺,导致问题。
师大小海腾
2020/04/16
7310
多线程一些基本概念多线程一些基本概念
1、线程进程 1.1 进程 进程是系统资源分配的最小单位,在iPhone中就是一个应用程序; 进程中的任务都是由线程来执行; 进程至少有一条线程,在进程开始执行时默认开启,也就是常说的:主线程; 每个进程的资源、地址空间都是相互独立的(安卓会涉及到多进程开发); 1.2 线程 线程是进程执行任务的基本单元; 进程中线程之间是共享资源和地址空间; 进程中至少有一条线程; 1.3 区别与联系 进程之间资源、地址空间相互独立,线程之间资源、地址空间可以共享; 单一进程奔溃后,不会影响其他进程;线程奔溃后,进
用户8893176
2021/08/09
3010
多线程一些基本概念多线程一些基本概念
iOS开发者多线程学习之旅
说到锁,我们再来看看苹果爸爸的给出干货Synchronization Costs and Performance
CC老师
2019/01/23
4660
iOS底层原理总结 - RunLoop
面试题 讲讲 RunLoop,项目中有用到吗? RunLoop内部实现逻辑? Runloop和线程的关系? timer 与 Runloop 的关系? 程序中添加每3秒响应一次的NSTimer,当拖动tableview时timer可能无法响应要怎么解决? Runloop 是怎么响应用户操作的, 具体流程是什么样的? 说说RunLoop的几种状态? Runloop的mode作用是什么? 一. RunLoop简介 运行循环,在程序运行过程中循环做一些事情,如果没有Runloop程序执行完毕就会立即退出,如果有Ru
xx_Cc
2018/05/10
1.5K0
2018 - iOS 面试题汇总一般面试题BAT面试题
金三银四,相信最近很多人都在跳槽。那么面试题自然还是要看下的,在这我就把我手里收集到的面试题(朋友面试,网上收集等等)进行了汇总,希望可以帮到正在或者准备面试的你,同时我也可以自己在过一遍一般面试题 1.堆和栈的区别 1.内存管理范围 只有oc对象需要进行内存管理 非oc对象类型比如基本数据类型不需要进行内存管理 2.内存管理本质 因为:Objective-C的对象在内存中是以堆的方式分配空间的,并且堆内存是由你释放的,就是release OC对象存放于堆里面(堆内存要程序员手动回收) 非OC
陈雨尘
2018/06/07
6.6K0
想进大厂?50个多线程面试题,你会多少?(一)
最近看到网上流传着,各种面试经验及面试题,往往都是一大堆技术题目贴上去,而没有答案。
程序员鹏磊
2018/03/18
3K5
想进大厂?50个多线程面试题,你会多少?(一)
iOS property的多线程问题解析
先解析提供的要素: a.nonatomic的NSArray属性; b.异步执行,gcd并发队列; c.多个block,对myNumberArr的多次读写操作;
落影
2020/08/25
1.3K0
iOS property的多线程问题解析
iOS多线程——你要知道的NSOperation都在这里你要知道的iOS多线程NSThread、GCD、NSOperation、RunLoop都在这里
你要知道的iOS多线程NSThread、GCD、NSOperation、RunLoop都在这里 转载请注明出处 https://cloud.tencent.com/developer/user/1605429 本系列文章主要讲解iOS中多线程的使用,包括:NSThread、GCD、NSOperation以及RunLoop的使用方法详解,本系列文章不涉及基础的线程/进程、同步/异步、阻塞/非阻塞、串行/并行,这些基础概念,有不明白的读者还请自行查阅。本系列文章将分以下几篇文章进行讲解,读者可按需查阅。 iOS
WWWWDotPNG
2018/04/10
1.7K0
iOS多线程——你要知道的NSOperation都在这里你要知道的iOS多线程NSThread、GCD、NSOperation、RunLoop都在这里
iOS面试知识总结之基本概念总结
凡经历过iOS面试的我们总会发觉,即使实际开发中做过许多项目,也难免为一个普通的面试题受挫。这也许不是因为我们技术不过关,而是因为在平时我们忽略了怎样将用到的知识很好的表述出来。闲暇之余我把一些常见的
梧雨北辰
2018/04/24
1.2K0
iOS面试知识总结之基本概念总结
iOS 开发--怎样高效的使用多线程
多线程技术在移动端开发中应用广泛,GCD 让 iOS 开发者能轻易的使用多线程,然而这并不意味着代码就一定高效和可靠。深入理解其原理并经常结合业务思考,才能在有限的线程控制 API 中最大化发挥并发编程的能力,也能轻易的察觉到代码可能存在的安全问题并优雅的解决它。
猿_人类
2019/08/16
1K0
ios线程和GCD和队列同步异步的关系
  进程是指在系统中正在运行的一个应用程序。比如同时打开QQ、Xcode,系统就会分别启动2个进程。截图
tandaxia
2018/09/27
2.7K0
ios线程和GCD和队列同步异步的关系
面试iOS 机会在自己手中
前言 面试是我们工作的敲门砖,正好现在也到了我们金九银十的招聘季,在这我汇出32个面试题希望能帮到正在面试的你。 加油(同样有不足的地方还望指出我们一起商讨,有兴趣的可以加我的iOS交流群: 6423
编程怪才-凌雨画
2020/09/15
6600
面试iOS 机会在自己手中
iOS多线程之三:GCD的使用
一、什么是GCD GCD是Grand Central Dispatch的简称,它是基于C语言的。如果使用GCD,完全由系统管理线程,不需要编写线程代码。只需定义想要执行的任务,然后添加到适当的调度队列(dispatch queue)。GCD会负责创建线程和调度你的任务,系统直接提供线程管理。 二、GCD的使用 首先看下这段代码:
s_在路上
2018/09/11
3.3K0
iOS多线程之三:GCD的使用
iOS基础问答面试题连载(三)-附答案
2016-11-2319:56:15 发表评论 3,614℃热度 1.请简单说明多线程技术的优点和缺点? 2.请简单说明线程和进程,以及他们之间的关系? 3.请简单说明在iOS开发中有哪些多线程的实现方案? 4.请简单说明主线程的作用,以及使用注意点? 5.请简单列出NSThread线程的几种状态,并说明状态转换的逻辑? 6.请简单说明如何简单的解决多线程访问同一块资源造成的线程安全的问题,以及注意点? 7.请简单介绍下什么是原子和非原子属性? 8.请简单介绍下GCD这门技术? 9.请简
timhbw
2018/05/03
9510
2017年5月iOS招人心得(附面试题)
在2017年5月中旬,技术老大让我招两个1-2年的iOS开发,把简历的筛选和第一轮技术面试的任务交给了我。于是便自己准备了这套面试题。
用户2932962
2018/08/30
6040
2017年5月iOS招人心得(附面试题)
iOS-多线程详解
欢迎大家指出文章中需要改正或者需要补充的地方,我会及时更新,非常感谢。 一. 多线程基础 1. 进程 进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 2.线程 1个进程要想执行任务,必须得有线程(每1个进程至少要有1条线程,称为主线程) 一个进程(程序)的所有任务都在线程中执行 3. 进程和线程的比较 1.线程是CPU调用(执行任务)的最小单位。 2.进程是CPU分配资源的最小单位。 3.一个进程中至少要有一个线程。 4
xx_Cc
2018/05/10
2.3K0
iOS多线程
进程是指系统中正在运行的一个应用程序。每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内。
hrscy
2018/08/30
7070
iOS多线程
相关推荐
阿里、字节:一套高效的iOS面试题( 多线程 GCD底层原理篇)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档