浅谈线程与进程
线程与进程的简单介绍
线程和进程的引入,目的是在于使程序能够几近同时地完成一些所需要功能,它的实现机制是通过不同进程或线程的切换运行,在切换间隔在毫秒级别时,用户无法察觉,从而形成视觉上的并行。
那么我们会有一个疑惑,为什么需要线程和进程两个组件实现切换功能的目的呢?
实际上进程包含着线程,进程是程序实现的最小单位,而线程则是对进程的再一次细分,我们可以理解为“进程的进程”,多个线程拥有同一个进程的一些系统信息,类似于地址,文件打开类的信息。由于进程是程序实现的最小单位,那么如果我们想在一个进程中实现时间的高效利用的话应该怎么办呢?这就是线程的意义。
举个例子,如果我们想要实现一个文件中文件的加入而改变文件目录,那么我们首先需要一个接收程序,一个为文件展示栏的组件重新排序和渲染的程序,还需要一个录入文件的程序。那么由于一个文件内的操作是进程,那么在内部的程序切换运行就是线程的作用了。
线程的生命周期
作为线程,它有自己的生命周期,下面我们用形象的语言介绍一下各个状态的特点与区别。
就绪
这个状态下,线程在等待cpu进行这部分程序的处理,也就是说,这个时候cpu没有分配给它进行运算的空间;
运行
这个状态下与上面相反,就像打开开关一样,线程运行;
阻塞
这个状态下,由于线程在向硬盘发出访问要求,程序内部就算cpu来处理也只能等待,所以cpu为了提高效率,选择不在这个时间段分配运算空间;
等待与延时等待
此状态大部分是由于自主触发了某些机制或者是用这个状态设计出来了这个程序在这个状态下,此线程没有权利接受cpu的运算空间分配,但是,此线程仍然可能由于线程间的关系得到运行,但是它自身不能被主动调用运算空间,此状态的取消需要人为修改回来。
而等待延时就是状态的取消随设计者设计的时间延迟而定,从而形成在特定时间段此线程不能实施,有别于阻滞,这里可以灵活的修改进程的时间,而不是随着程序不受认为控制地形成线程的”停调“。