多线程简介(多线程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 | 自动 | 经常 |
相关文章推荐
- Python3写爬虫(四)多线程实现数据爬取
- C#实现多线程的同步方法实例分析
- C#实现进程管理的启动和停止实例
- DOS中判断进程是否存在的方法
- 浅谈chuck-lua中的多线程
- C#进程监控方法实例分析
- 批处理 结束麦咖啡进程的代码
- C#简单多线程同步和优先权用法实例
- PowerShell查看进程的所属用户
- C#多线程学习之(四)使用线程池进行多线程的自动管理
- C#多线程编程中的锁系统(三)
- C#实现强制关闭当前程序进程
- C#实现读取被进程占用的文件实现方法
- C#获取进程或线程相关信息的方法
- 解析C#多线程编程中异步多线程的实现及线程池的使用
- C#多线程学习之(六)互斥对象用法实例
- 简单掌握Windows中C#启动外部程序进程的方法
- 基于一个应用程序多线程误用的分析详解
- C#多线程学习之(三)生产者和消费者用法分析
- C#多线程学习之(一)多线程的相关概念分析