进程、线程、CPU核数之间的关系(附加select细节)

前言:为什么要开线程?

目的

(1)是想等一个子程序执行完毕了,然后在继续操作!用启动线程,不然界面和别的进程无法工作,程序完了就完了没有如何效果和后续功能,然后用线程启动然后线程等待,比如摄像头不停的捕获图像,鼠标键盘任何时候输入都有效,开启后CPU会给这个进程分配专用的内存空间核cpu时间资源。

(2)其实很像中断函数一样,对一个函数开启线程后,当它处于等待IO发生动作后去执行比如键盘按下消息,没有按下时,一直处于阻塞,这是线程交出cpu,去执行其它线程或进程,如果你用while(1){},cpu会一直被占用,我们使用各种中断,也是为了避免while(1)卡住,而开线程后内核内部的调度机制会合理的分配cpu,比中断还要高级。

(3)开线程后,每个线程有独立的栈,当线程阻塞时,内存数据不会被释放,cpu被释放执行其他线程

(4)开线程后,当A线程的某个函数阻塞时,会交出CPU去B线程里面执行这时可能B的某个函数阻塞,去执行C线程,这样3个阻塞函数都被执行并等待条件到来,如果不开线程,三个阻塞函数在一个线程里面,只能永远在一个函数,其他2个阻塞函数不会执行并等待条件到来

 

1 程序与进程、线程的关系

(1)程序只是一组指令的有序集合,它本身没有任何运行的含义,它只是一个静态的实体。而进程则不同,它是程序在某个数据集上的执行。进程是一个动态的实体,它有自己的生命周期。它因创建而产生,因调度而运行,因等待资源或事件而被处于等待状态,因完成任务而被撤消。反映了一个程序在一定的数据集上运行的全部动态过程。

(2)进程和程序并不是一一对应的,一个程序执行在不同的数据集上就成为不同的进程,可以用进程控制块来唯一地标识每个进程。而这

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值