iOS 进程和线程

2021-10-28  本文已影响0人  sampson666888

1. 进程和线程

什么是进程?
截屏2021-10-28 下午4.02.50.png

iOS 开发是单进程,安卓是可以多进程

什么是线程?
进程和线程的区别

2. 多线程的意义

一个进程的任务都是多个的,单线程执行效率肯定是低下的,在开发中都是多线程编程,为什么要使用多线程呢?

NSLog(@"开始");
NSInteger count = 100000;
for (NSInteger i = 0; i < count; i++) {
    // 栈区
    NSInteger num = i;
    // 常量区
    NSString *name = @"RENO";
    // 堆区
    NSString *myName = [NSString stringWithFormat:@"%@ - %zd", name, num];
    NSLog(@"%@", myName);
}
NSLog(@"结束");
2021-10-21 15:42:15.517924+0800 001----多线程的作用[35508:936771] 开始
2021-10-21 15:42:15.518147+0800 001----多线程的作用[35508:936771] RENO - 0
2021-10-21 15:42:15.518314+0800 001----多线程的作用[35508:936771] RENO - 1
2021-10-21 15:42:15.518468+0800 001----多线程的作用[35508:936771] RENO - 2
。。。。。。。。。。。。。
2021-10-21 15:43:03.151830+0800 001----多线程的作用[35508:936771] RENO - 99998
2021-10-21 15:43:03.152314+0800 001----多线程的作用[35508:936771] RENO - 99999
2021-10-21 15:43:03.152691+0800 001----多线程的作用[35508:936771] 结束

在上面的案例中,循环执行十万次的循环,在循中进行还进行局部变量的创建,此过程执行完成共耗时接近一分钟,如果此流程放在主线程,会造成主线程卡顿,极大的影响用户体验。

所以通常情况下,我们都会进行异步处理,开启新的线程对这些事务进行处理,而如果一个事务很复杂,比较耗时,可以将一个大的事务拆分成多个小的事务进行并发处理,这样可以节省时间,并且不会影响用户的体验。

多线程的优缺点

优点:

缺点:

3. 时间片

时间片timeslice)又称为“量子(quantum)”或“处理器片(processor slice)”是分时操作系统分配给每个正在运行的进程微观上的一段CPU时间(在抢占内核中是:从进程开始运行直到被抢占的时间)。

简单来说就是:CPU时间片即CPU分配给多个程序的时间,每个线程被分配一个时间段,称作它的时间片。

上一篇 下一篇

猜你喜欢

热点阅读