iOS设计中多线程的简单介绍

时间:2021-03-29 05:20:09

1.什么是多线程,表现方式有哪些,都有哪些优缺点

进程是程序的实体 进程是程序的一次执行,进程是线程的容器 线程是轻量级进程,是程序执行流的最小单位

多线程的概念: 单个程序同时运行多个线程完成不同的任务,称为多线程,是指从软件或者硬件实现多个线程并发执行的技术

为什么使用多线程: 节约CPU时间,避免程序卡死 多线程技术是防止主线程堵塞和增加运行效率的最佳方法

怎样实现多线程(表现方式): NSThread:是三种方法中轻量级,但需要管理线程的生命周期,同步,加锁问题,会导致一定的性能开销 NSOperationQueue:是基于OC实现的,以面向对象的方式封装了需要执行的操作,不必关系线程同步,管理问题 Grand central dispatch(GCD):提供一些新特性,运行库来支持多核并行编程,他的关注点更高:如何在多个CPU提升效率

 

多线程的优点:

 1.)使用多线程可以把占据时间长的程序的任务放到后台去执行

2.)程序的运行速度可能加快

3.)在一些等待的任务实现用户输入,文件读写和网络收发数据,在这种情况下,可以释放一些珍贵的资源如内存占用等

多线程的缺点:

 1).如果有大量线程,会影响性能,因为操作系统需要在他们之间切换

2).通常块模型数据需要在多个线程间共享,需要放置线程死锁情况发生

线程开销: 

线程的运行需要占用内存资源和CPU,这就产生了内存和性能开销。 内存开销包括系统内核内存和应用程序内存。 线程要和内存进行交互,这个过程是非常耗时的,这是线程的性能开销的主要原因。 创建一个新线程的线程开销明显比创建一个新进程开销要小的多,这也是我们多线程开发的一个重要原因。

2.线程开销 

 

线程创建的大概开销:

 1.)内核数据结构:大约1kb

2.)栈空间:主线程大约1M,第二线程大约512k(个人感觉从第二线程到之后线程空间不会递减,依旧保持在512k。假设递减,在第十线程之后占用的空间就太少了,几乎不能完成任何任务)。

3.)线程创建时间:大约90毫秒

4.)另外开销是程序内线程同步的开销

3.多线程中的基本概念 

 

并行:两行代码同时执行,这里不是同一个时间点执行,并行只是在任务执行的时间上有重叠 并发:在同一时间内,两个或多个程序同时执行,这里是指宏观意义上,实际总会有误差,只有多核处理器才能做到微观上的真正的同时 串行:与并行相对,几个任务之间依次执行。即执行任务上没有重叠。 同步和异步:同步是指两个人物之间的关系,一个任务需要等待另一个任务的反馈结果才能继续执行。异步与同步相反,一个任务不需要等待其他任务的反馈也可以继续执行。

4.总结

 在学习多线程的过程中,主要有两点能力需要我们去提升,一是多线程工具的使用能力,二是多线程思维。要习惯使用多线程的思维去解决问题,但在培养多线程编程思想需要我们用更长的时间去习惯和完善。