一 线程
1.认识线程(Thread)
线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。
2.为什么会有线程?
1)“并发编程”的重要性
单核cpu已不符合人们预期的算力,就需要多核cpu,而并发编程能更充分利用多核cpu资源。
有的场景需要等待IO,在此时间内,为了让等待的时间能做一些别的事,也需要用到并发编程。
2)线程实现并发编程比进程更轻量
线程的创建、销毁、调度都比进程更快。
reason:创建进程可能包含多个线程,涉及到资源分配/释放,而线程之间共享资源,省去了这一步
3)即使线程比进程轻量,不满足的人类又搞出来了“线程池(ThreadPool)”和“协程”(Coroutine)。
3,线程的好处
(1)易于调度。
(2)提高并发性。通过线程可方便有效地实现并发性。进程可创建多个线程来执行同一程序的不同部分。
(3)开销少。创建线程比创建进程要快,所需开销很少。
(4)利于充分发挥多处理器的功能。通过创建多线程进程,每个线程在一个处理器上运行,从而实现应用程序的并发性,使每个处理器都得到充分运行
二 进程和线程的联系
1.线程是“进程的一部分”,一个进程中至少包含一个线程,即主线程,可包含多个线程。
2.一个PCB描述一个线程,若干个PCB联合在一起描述一个进程。
三 进程和线程的区别
1.PCB属性中
pid------每个线程都不一样
内存指针和文件描述符表------同一进程的若干线程,相同
状态优先级,上下文,记账信息------每个线程都有一组自己的属性
2.进程和进程之间不共享内存空间,同一进程的线程之间共享同一个内存空间。
3.进程是系统分配资源的最小单位,线程是系统调度的最小单位。
4.一个进程挂了不会影响其他进程,一个线程挂了可能会把同进程内的其他线程一起带崩溃。