您的位置:首页 > 移动开发 > IOS开发

多线程简介(多线程001)

2016-05-09 14:22 513 查看

4个基本概念

同步

之前写程序的时候都是从上到下,从左到右,代码执行顺序
1个线程执行多个任务,也是依次执行,1个线程同一时间执行1个任务

异步

多个线程可以 "同时" 执行多个任务

进程

当前计算机中正在运行的程序
每个进程之间是独立的,每个进程均运行在其专用的且受保护的内存空间内
通过“活动监视器”可以查看Mac系统中所开启的进程

线程

一个进程包含一个或多个线程
线程是程序执行的基本单位,进程中所有的任务都在线程中运行

多线程

多线程的基本概念

一个进程中可以开启多个线程
多个线程是“同时”运行的
多线程可以提高程序的执行效率

执行原理

通过CPU的快速切换线程

特征总结

(单核CPU)同一时间,cpu只能处理1个线程,只有1个线程在执行
通过CPU的快速切换
切换时间非常短,造成了“同时”执行的现象
开启非常多线程的时候,CPU切换线程消耗大量资源导致线程的执行效率降低

优缺点

优点

能适当的提程序的执行效率
能适当的提高资源的使用率
线程执行完所有任务后自动销毁

缺点

开启线程需要占用一定的内存空间(默认情况下,每一个线程都占512KB)
如果开启大量的线程,会占用大量的内存空间,降低程序的性能
线程越多,cpu在调用线程上的开销就越大
程序设计更加复杂,比如线程间的通信、多线程的数据共享

主线程

一个程序运行后,默认会开启1个线程,称为“主线程”或“UI线程”
主线程一般用来 刷新UI界面 ,处理UI事件(比如:点击、滚动、拖拽等事件)
主线程使用注意

别将耗时的操作放到主线程中
耗时操作会卡住主线程,严重影响UI的流畅度,给用户一种卡的坏体验

iOS中的四中多线程技术的区别

 简介语言线程生命周期使用频率
pthread跨平台POSIX,使用不便C手动几乎不用
NSThread面向对象,直接操作线程对象OC手动偶尔
GCD对多核性能优化,使用方便C自动经常
NSOperation对GCD的封装,面向对象OC自动经常
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息