线程是进程的基本执行单元,一个进程的所有任务都在线程中执行
该进程需要线程才能执行任务,并且该进程至少需要一个线程
程序启动时,默认情况下将打开一个称为主线程或UI线程的线程
2 :工艺定义
进程是指在系统上运行的APP应用程序
每个进程都是独立的,每个进程都在专用的受保护内存中运行
3 :进程和线程之间的差异
地址空间:同一进程的线程共享该进程的地址空间,进程之间是独立的地址空间。
拥有—同一进程中的线程共享此进程的资源,如内存、I/O和cpu,但进程之间的资源是独立的。
一个进程崩溃后,保护模式不会影响其他进程,但一个线程崩溃导致整个进程死亡。 所以多进程比多线程更结实。
在流程切换时,消耗的资源大、高效。 因此,在涉及频繁切换的情况下,与进程相比,使用线程更好。 另外,如果需要同时运行并共享特定变量的并发操作,则不能只在线程上使用进程
执行进程:每个独立的进程都有程序运行的入口、顺序运行和程序入口。 但是,线程不能独立运行,并且APP应用程序必须根据存在的APP应用程序提供对多个线程的运行控制。
线程是处理器调度的基本单元,但进程不同。
4 )多线程的含义
好处
能够适当地提高程序执行效率
可以适当提高资源利用率(CPU、存储器)
在线程上执行任务完成后,线程将自动销毁
缺点
打开线程需要一定的内存空间。 默认情况下,每个线程占512 KB )
打开大量线程会占用大量内存空间,从而降低程序性能
线程越多,CPU调用线程的开销就越大
程序的设计变得更加复杂,包括线程之间的通信、多线程数据共享等
5 )多线程原理
(单核cpu )同时,cpu只能处理一个线程。 换句话说,同一时间只运行一个线程
多线程并发:
*是cpu在多个线程之间快速切换
* cpu调度线程的时间足够快,允许多线程“并发”运行
线程数非常多时
* cpu直接在n个线程之间切换,占用大量cpu资源
*每个线程的计划数量减少,线程的执行效率降低
6 )多线程技术方案
多线程技术方案. png
) C和C的桥接
__bridge只执行类型转换,但不修改对象(内存)管理权限
_ _ bridge _ retained (使用cfbridgingretain,将对象- c中的对象转换为核心基础中的对象,同时将对象(内存)的管理权传递给我们然后,必须使用CFRelease或相关方法释放对象。
* _ _ bridge _ transfer (使用cfbridgingrelease将Core Foundation对象转换为Objective-C对象,同时将对象(内存)的管理权限转换为aaabjective
8 :线程生命周期
线程生命周期. png