六、应该创建多少个合适?新建线程的最优场景(应该创建多少个线程最好):
一、先来介绍一下软件
1.定义:
计算机内除了硬件之外,最大的软件就是操作系统了。
1.1OS操作系统:
操作系统是一组做计算机资源管理的软件的统称,目前常用的操作系统有:Windows系列,Unix系列(付费),Linux系列等等;
eg:linux系统:所有发布的程序(上手难度有点高,高性能)
Windows系统:家庭、工作中常用的操作系统(图形化界面,操作简单)
MacOS苹果系统:类似于windows,市场占比较少,UI效果更好,基本无病毒
题外话:如果您的电脑弹窗较多,建议您安装杀毒软件火绒。
二、进程
1.进程:是操作系统分配资源的最小单位,一个进程拥有的资源有自己的堆、栈、虚拟空间(页表)、文件描述符等信息;简单来说,将一个可执行文件运行起来就是一个进程。Windows可执行文件就是一个exe程序。
2.怎么去看整个电脑上的进程:快捷键Ctrl+shift+esc
进程ID并不是固定不变的,每次启动进程时,动态分配的。每次打开新的进程都不一样。
3.进程的本质+组成
进程本质上就是一个PCB结构体,类似于Java中的类,而这个Java中的类包含了:
(1)PID:进程的唯一身份标识;
(2)进程状态:
- 新建状态 New
- 就绪状态
- 运行状态
- 阻塞状态
- 销毁状态
(3)优先级:决定进程执行的顺序,可以用户指定
(4)记账信息:保证进程执行的公平性,可以规避进程饿死
记账信息里面会记录分配cpu的次数和执行间隔,作为cpu是否执行他的依据,而是否执行他是进程调度器决定的,记账信息只是提供给调度器参考信息
(5)上下文信息:保存本次的执行状态,以便于下次执行,而这个过程就叫做一个上下文
(6)一组内存:记录此进程需要使用的资源
4.进程关联的重要概念:
1.时间片:每个进程得到的CPU的执行时间叫做时间片。
三、线程
线程是操作系统可以进行调度的最小单元,被包含在进程中,一个进程中可以包含多个线程。
(1)线程的优势:效率高,线程间可以共享资源
四、进程VS线程
(1)从属关系不同:进程是可执行的文件的实例,进程中包含了线程,,线程中不可以包含进程
(2)描述侧重点不同:进程是操作系统分配资源的基本单位,而线程是操作系统进行调度 的基本单位
(3)共享资源不同:线程之间可以共享资源(内存,打开的文件栈信息不可以共享),进程之间不可以共享资源
(4)上下文切换速度不同:线程上下文切换速度快,进程慢
(5)操作者:进程的操纵者是操作系统,线程的操纵者是编程人员
五、线程是不是越多越好?
答:不是,如果创建的线程过多,就会造成狼多肉少的情况,就会造成恶意争抢和线程过度调度的问题的。反而降低效率。
六、应该创建多少个合适?新建线程的最优场景(应该创建多少个线程最好):
答:无标准答案,看服务器硬件配置情况和任务类型来说,通常是比较合适的是CPU个数-1.
- 计算密集类,不宜太多。
- IO类型,不费CPU,读写需要时间,可以适当多创建几个线程