iOS多线程
来源:互联网 发布:西安西科软件 编辑:程序博客网 时间:2024/06/08 03:53
增:
在计算机编程中,一个基本的概念就是同时对多个任务加以控制。许多程序设计问题都要求程序能够停下手头的工作,改为处理其他一些问题,再返回主进程。可以通过多种途径达到这个目的。
多线程是为了同步完成多项任务,不是为了提高运行效率,而是为了提高资源使用效率来提高系统的效率。
线程是在同一时间需要完成多项任务的时候实现的。
1. 什么是多线程?
在理解多线程的时候,最好是将线程与进程一起进行比较和理解。
1.1 进程
进程是指在系统中正在运行的一个应用程序。
每个进程之间都是独立的,它们均运行在其专用且受保护的内存空间中(一个应用程序启动后,系统会先启动一个进程,放入内存中运行)。
1.2 线程
进程本身是不能执行任务的,进程想要执行任务必须得有线程,只有线程才能执行任务,所以在进程启动运行的时候会创建一条默认的线程(即
主线程
)。一个进程中可以有多条线程(每个进程至少要有一条主线程,可以有多条子线程),线程是CPU执行任务的基本单位,进程的所有任务都是在线程中执行的。
线程是串行(一个一个的执行)执行任务的,也就是说线程在同一时间内只能执行一个任务,处理完之后才能处理下一个任务。
1.3 线程与进程之间的区别
线程是CPU执行任务的基本单位
进程是CPU分配资源单位
一个程序可以对应多个进程;一个进程可以有多条线程,但至少有一个线程
同一个进程内的线程共享进程里的资源
1.4 多线程
多线程,就是在一个进程中开启了多条线程,它可以同时执行不同的任务,但其实并不是同时,而是CPU在各条线程之间快速来回切换而已,本质上还是只有1条线程在执行任务。
执行原理
1.同一时间内,CPU只能处理一条线程,只有一条线程在工作。
2.多线程并行执行,其实就是CPU在不同线程之间快速的调度。如果CPU调度线程的时间足够快,就导致了并行执行的假象。
优点
1. 可以适当提高程序执行效率。
2.能适当提高资源利用率(CPU,内存):使用多线程能把处在闲时的CPU和内存充分利用起来,提高程序的执行效率;多线程编程是防止主线程堵塞,增加系统效率的最佳方法
缺点
1.创建线程是有开销的。在iOS中主要成本有:1)线程的创建时间大概是90毫秒;2)内核数据结构(大概1KB);3)栈空间:主线程1MB;子线程512KB;也可以使用
-setStackSize
来设置线程栈空间的大小,但必须是4的倍数,最低16K。2.如果开启大量线程的话,或许会适得其反降低程序执行效率:1)占用大量的内存,导致程序性能降低;2)线程一多的话,CPU在线程之间的调度上开销就越大;3)每条线程的调度次数会降低。
3.线程一多的话,会让程序设计变得更加复杂,比如线程之间的通信,多线程之间的数据共享等。
2. 什么时候要使用多线程?
程序在启动之后,会默认创建一条线程,称为主线程或UI线程
主线程的作用:
1.显示和刷新UI界面用途
2.处理UI事件
除去主线程之外的线程就是子线程,也叫后台线程。
子线程的作用:
1. 耗时操作尽量放到子线程中处理
使用注意:
1.和UI相关的刷新操作必须放到主线程中进行处理
2.别将耗时的操作放入主线程内:耗时操作会将主线程阻塞,无法处理用户产生的事件,会给用户一种卡顿的感觉
参考资料:
iOS基础
iOS多线程-多线程简介
多线程基础
- ios多线程
- iOS多线程
- iOS多线程
- iOS多线程
- 多线程ios
- IOS 多线程
- ios多线程
- ios 多线程
- IOS多线程
- IOS多线程
- iOS多线程
- iOS多线程
- ios 多线程
- iOS多线程
- IOS多线程
- ios多线程
- iOS 多线程
- iOS 多线程
- Android Handler源码分析
- [TC] 【源码下载】百宝云之新版注册码系统
- NDK Fatal signal 11 (SIGSEGV) 错误定位
- 实现View滑动的方法总结
- Meterpreter 控制持久化
- iOS多线程
- eclipse中创建maven module报错:Could not calculate build plan:Plugin.........
- 【leetcode】【53】Maximum Subarray
- 在linux上安装pear
- 关于如何高效率开发App
- qt连接mysql
- 前端SEO优化(个人总结)
- JVM:监控resin/tomcat
- 华为oj 输出单向链表中倒数第k个结点