在传统的操作系统中,进程拥有独立的内训地址空间和一个用于执行任务的线程,但是,现在的情况更多的情况下要求在同一地址空间下拥有多个任务并发执行,因此多线程被引入操作系统。
对于多线程我的理解是:线程就相当于是“迷你型的小进程”,为什么这么说呢,是因为线程与进程有很多的相似之处,比如两者都有 运行状态、就绪状态、阻塞状态;(缺少资源时,进程处于阻塞状态,有资源但是CPU 没有到位时,进程处于就绪状态,都有时,处于运行状态);
一个程序至少有一个进程,每一个进程至少有一个线程。
进程:资源分配的最小独立单位。就是一个应用程序在处理机制上的一次执行过程,它可以申请和拥有系统资源;进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。
线程:进程下的一个分支。是进程的一个实体,是CPU调度和分派的基本单位,是比进程更小的独立运行的基本单位。除了在运行中必不可少的资源外,线程本身基本不拥有系统资源,但是它可以与同一个进程的其他的线程共享进程中的全部资源。
多线程的目的:防止主线程阻塞,增加运行效率等的最佳方法,苹果公司提供了Operation这个类,这是一个优秀的多线程编程方法,一个NSperationQueue操作队列,就相当于一个线程管理器,用来管理多线程,多线程是一个比较轻量级的方法来实现单个应用程序内多个代码执行路径,iOS下的主线程堆栈大小是1M,第二个线程开始就是512KB,并且该值不能通过编译器开关或线程API函数来修改,只有主线程有刷新UI的能力。
另外,定时器与线程的区别:定时器事件可以多次执行,默认是在主线程中,线程事件只能执行一次。
网友评论