ios线程第一发:线程简介
2015-01-31 00:07
176 查看
线程和进程:
进程:系统中正在运行的应用程序
进程之间相互独立,运行在专用且受保护的内存空间内
线程:线程是进程的基本执行单位,一个进程的所有任务都在线程中执行
关系:进程想执行任务,必须得有线程(每个进程至少有一个线程)
线程是进程中的一条执行路径
线程:
串行:按照顺序执行,同一时间之内一个线程只能执行一个任务
多线程:
一个进程中可以开启多条线程,每条线程可以并发(同时),执行不同的任务
并行:同时执行不同任务(可以提高程序的至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.多线程安全隐患
进程:系统中正在运行的应用程序
进程之间相互独立,运行在专用且受保护的内存空间内
线程:线程是进程的基本执行单位,一个进程的所有任务都在线程中执行
关系:进程想执行任务,必须得有线程(每个进程至少有一个线程)
线程是进程中的一条执行路径
线程:
串行:按照顺序执行,同一时间之内一个线程只能执行一个任务
多线程:
一个进程中可以开启多条线程,每条线程可以并发(同时),执行不同的任务
并行:同时执行不同任务(可以提高程序的至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多种线程锁的简介
- Boost线程简介(转自Boost中文站)
- 进程间通讯和线程间通讯的常用机制简介(转发,英文)
- Java多线程初学者指南(1):线程简介
- 如何删除IOS--CISCO IFS简介
- Java多线程初学者指南(1):线程简介
- 路由器配置新手上路---IOS简介
- Java多线程初学者指南(1):线程简介
- Boost线程简介(转自Boost中文站)
- Java多线程初学者指南(1):线程简介
- 路由器配置新手上路---IOS简介
- .NET常见线程简介
- 进程与线程简介
- 读李宁老师的-Java多线程初学者指南(1):线程简介
- Java多线程初学者指南(1):线程简介
- java线程简介(同步详细信息)
- 进程与线程简介
- .NET常见线程简介
- java线程简介(共享对数据的访问)
- LinuxThread的线程机制简介