时间:2021-05-20
一、前言部分
最近在面试,重新温习了一遍多线程,希望加深一遍对于多线程的理解。
1、什么是进程?
1).要了解线程我们必须先了解进程,通俗来讲进程就是在系统中运行的一个应用程序。
2).每个线程之间是独立存在的,分别运行在其专用的且受保护的内存空间中。
3).比如打开QQ或Xcode系统会分别开启两个进程 如图:
4)、我们可以通过"活动监视器"查看Mac系统中所开启的进程。
2、什么是线程?
1).一个进程要想执行任务必须得有线程,即一个进程至少要有一个线程。
2).线程是进程的基本执行单元,一个进程(程序)的所有任务都是在线程中执行的。
3).比如使用酷狗播放音乐、使用迅雷下载电影都需要在线程中运行 如图:
3、什么是线程的串行?
1).一个线程中任务是串行执行的(顺序执行)的,也就是说一个线程同一时间内只能执行一个任务。
2).串行执行图解,比如一个线程下载3个文件(文件A、B、C)
4、什么是多线程?
1).一个进程中可以开启多个线程,每个线程可以并发(同时)执行不同的任务。
2).类似关系列举:进程---->车间;线程---->车间工人
3).多线程图解,比如同时开启3个线程分别下载3个文件(文件A、B、C)
5、多线程原理
1).同一时间CPU只能执行一个线程,只有一个线程在工作(执行)。
2).多线程并发(同时)执行,其实是CPU快速的在多个线程之间调度(切换)。
3).如果CPU调度线程的速度够快,就会造成多线程并发执行的假象。
4).多线程的缺点:
1、每个线程都会占用一定的内存空间(默认情况下:主线程占用1MB,子线程占用512KB),
如果开启线程过多会占用大量的内存空间因而造成程序性能降低。
2、线程越多CPU调度线程上的开销就越大(类似工厂工人越多,工厂开销也越大)。
3、使程序设计更复杂:比如多线程的数据通信,多线程之间的数据共享。
5).多线程的优点:
1、能适当提高程序的执行效率。
2、能适当提高资源利用率(CPU、内存的利用率)
6、什么是主线程?
1).一个iOS程序开启后默认会开启一个线程,这个线程被称为"主线程"或"UI线程"。
2).主线程的主要作用:
1、显示/刷新UI界面
2、处理UI事件(比如点击事件、滚动事件、拖拽事件等)
3).主线程注意点:
1、别将耗时的操作放在主线程中,耗时操作放在主线程中会造成程序卡顿的问题。
7、耗时操作Demo演示
1)、直接在主线程中运行的Demo
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{//获取当前执行方法和当前线程//number== 主线程//number!= 其他线程、子线程、次线程NSLog(@"%s----%@",__func__,[NSThread currentThread]);//直接在主线程中运行 造成UI操作卡顿[self longTimeOperation];}#pragma mark-耗时操作-(void)longTimeOperation{for (int i=; i<; i++) {NSLog(@"%d",i);}}2)、在子线程中运行的Demo
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{//获取当前执行方法和当前线程//number== 主线程//number!= 其他线程、子线程、次线程NSLog(@"%s----%@",__func__,[NSThread currentThread]);//将耗时操作放在子线程中执行,不影响UI的操作[self performSelectorInBackground:@selector(longTimeOperation) withObject:nil];}#pragma mark-耗时操作-(void)longTimeOperation{for (int i=; i<; i++) {NSLog(@"%d",i);}}以上内容是小编给大家介绍的ios多线程知识,希望对大家有所帮助!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
在上篇文章给大家介绍了java多线程的实现方式,通过本文给大家介绍java多线程实例,对java多线程感兴趣的朋友一起学习吧首先给大家说下多线程的优缺点多线程的
IOS多线程编程NSThread的使用方法NSThread是多线程的一种,有两种方法创建子线程(1)优点:NSThread比GCD、NSOperation都轻量
多线程概述对于ios系统中的某个App来讲,是单进程多线程方式来工作。一般来说,使用多线程的好处是可以把程序分成相对独立的几个模块,可以有效的防止某个模块堵塞的
前言在多线程简介中,我已经说明过了,为了提高界面的流畅度以及用户体验。我们务必要把耗时的操作放到别的线程中去执行,千万不要阻塞主线程。iOS中有以下3种多线程编
多线程中使用lambda在本篇文章中,主要介绍lambda函数在多线程中的使用。先从下面的例子开始吧:#include#includeintmain(){std