ios线程第一发:线程简介
来源:互联网 发布:mpg格式转换软件 编辑:程序博客网 时间:2024/05/16 17:55
线程和进程:
进程:系统中正在运行的应用程序
进程之间相互独立,运行在专用且受保护的内存空间内
线程:线程是进程的基本执行单位,一个进程的所有任务都在线程中执行
关系:进程想执行任务,必须得有线程(每个进程至少有一个线程)
线程是进程中的一条执行路径
线程:
串行:按照顺序执行,同一时间之内一个线程只能执行一个任务
多线程:
一个进程中可以开启多条线程,每条线程可以并发(同时),执行不同的任务
并行:同时执行不同任务(可以提高程序的至ing 效率)
2.多线程原理:
同一时间 cpu 只能处理一条线程,只有一条线程在工作(执行)
多线程并发(同时)执行, 就是cpu 快速在多条线程之间调度(切换)
cpu 调度线程的时间足够快,就造成多线程并发的假象
3.优缺点
优点:能适当提高程序的执行效率
能适当提高资源利用率(cpu, 内存利用率)
缺点:开启线程需要一定的内存空间,(默认线程都占用512kb,以前主线程1m, 子线程512k, 如果开启大量线程,会占用大量内存,降低程序性能
线程越多, cpu 在调度线程上得开销就越大,线程的执行效率降低
程序设计更复杂:(线程之前的通信,多线程数据共享)
4.主线程(ios 程序运行之后,默认开启一条线程,称为主线程或者 ui 线程)
作用: 1>刷新/显示 ui 界面
2>处理 ui 事件(点击,滚动,拖拽)
注意:不能放耗时操作,耗时操作会卡主主线程,影响 ui 流畅度.
5.线程创建的三种方式(ios多线程实现方案):
pthread: 几乎不用
NSThread(附录1):(面向对象,简单易用,可直接操作线程对象)
生命周期:程序员管理,
使用频率:偶尔使用
GCD(附录2):(代替 NSThread 等线程技术,充分利用设备的多核)
生命周期:自动管理
使用频率:经常使用
NSOperation:(基于 GCD 底层是 GCD,比 GCD 多了些简单实用,更面向对象)
生命周期:自动管理
使用频率:经常使用
6.线程的状态:
线程的执行是由 cpu 调度的,程序员不能参与,
提示:在开发多线程的时候,不要相信一次执行的结果
线程的优先级:优先级高的任务只是便是 cpu 调度的频率高
误区:优先级高的任务会先执行完
建议:不要修改线程的优先级,做多线程开发最主要的目的是将耗时的操作放在后台,
修改优先级的隐患:优先级翻转
开发多线程宝典:尽量简单!
7.多线程安全隐患
- ios线程第一发:线程简介
- ios线程第二发: NSThread(附录1)
- ios线程第二发: GCD(附录2)
- [ios]posix子线程给主UI线程发消息
- 线程-001-线程简介
- 线程简介
- 线程简介
- 线程简介
- 线程简介
- 线程简介
- 线程简介
- 线程简介
- 线程简介
- 线程简介
- 线程简介
- 线程简介
- 线程简介
- iOS多种线程锁的简介
- Android ListView 默认选中某一项
- 2015.1.30实验室日记
- html5手机网站需要加的那些meta标签,手机网站自适应
- 图形学中的透视变换
- 智力游戏(黑白子交换)
- ios线程第一发:线程简介
- Unity3D占用内存太大的解决方法
- unity3d-物理引擎
- python邮件处理模块envelopes
- 域单点问题总结
- ios线程第二发: NSThread(附录1)
- 智力游戏(常胜将军)
- 大漠红创新工艺 打造放心枸杞干果市场
- spring与CXF整合配置(服务端)