|
进程与线程的关系
1.为什们要有线程
首先, “并发编程"成为"刚需”, 但仍存在一个 重要问题
:
我们写一个 服务器程序,我们可以针对每个客户端,分别创建一个进程,去提供服务。但服务器这里可能有多个客户端,来来回回。每次有个新客户端来了,都需要创建
个线程来服务,客户端走了,进程就销毁
。
如果我们频繁的创建、销毁进程,这个操作是比较低效的。
为什么是低效的呢?
进程的操作步骤为:
- 创建PCB
- 给进程分配资源(内存/文件),赋值到PCB中
- 把PCB插入链表
进程的销毁步骤为:
- 把PCB从链表上删除
- 把PCB中持有的资源释放
- 销毁PCB
而在第二个步骤中,分配资源和释放资源这件事,对于操作系统来说是比较消耗时间的的。
# 注意 #
为了解决这个问题,这时我们就要使用到进程。
2.线程的概念
- 线程是被包含在进程中的。
- 一个进程会默认有一个线程,也可以有多个线程。
- 每个线程都是一个“执行流”可以单独在CPU上就行调度。每个线程之间都可以按照顺讯执行自己的代码。多个线程之间 “同时” 执行着多份代码。
- 同一个进程中的这些线程,公用同一份系统资源(内存+文件)。
我们也把线程称为“轻量级进程”
- 创建线程比创建进程更快.
- 销毁线程比销毁进程更快.
- 调度线程比调度进程更快.
3.多线程的好处
- 能够充分利用上多核CPU,能够提高效率
- 只是创建第一个线程的时候,需要申请资源,后续在创建新的线程,都是共用同一份资源(节省了申请资源的开销)
- 销毁线程的时候,也是销毁到最后一个的时候,才真正释放资源,前面的线程销毁,都不必真正释放资源
4.进程与线程的区别
进程 | 线程 |
---|---|
进程包含线程 | \ |
\ | 线程比进程更轻量,创建销毁更快 |
进程和进程之间不共享空间 | 同一个进程的线程之间共享一个内存空间 |
系统分配资源的最小单位 | 系统调度的最小资源 |
|
以上就是今天要讲的内容了,希望对大家有所帮助,如果有问题欢迎评论指出,会积极改正!!