进程、线程、并行、并发。

什么是进程?

可以理解成运行中的应用程序;

什么是线程?

可以理解成 任务知行的通道;

目前的cpu都是多核多线程的;

什么是多核; 多核就相当于有多个cpu;

打一个比方; 一个医院有一个医生(单核),线程就相当于该医生同一个时间段可以给多少个人看病; 线程也可以理解为一个人边吃饭边看电视(双线程); 但是处理吃饭和看电视都是由大脑(cpu)来控制;

但这里面有一个注意的点,不管你有多少个线程;cpu同一个"时间点"只能处理一个线程的事;

多线程的好处就是可以快速切换任务; 就相当于在同一个"时间段 "cpu可以执行多个任务;

什么是并行;

并发就是同一个"时间点"执行多个任务;

什么是并发;

同一个时间段执行多个任务(同一个时间点只能执行一个任务,所以多个任务之间不同的来回切换);

写到这里我突然想到, js中写的定时器上的时间并不是严格意义上的执行时间;

js是单线程的, 它在执行定时器一定是这样的;   js把任务分为 主队列和副队列; 现在主队列中有很多任务; 第一条任务就是定时器的任务; 在执行定时器时发现需要2秒后才能执行里面的代码, 那么js就把这个任务放在了副队列; 然后在执行主队列后面的任务; 直到主队列的任务执行完后,在把副队列任务放在主队列中。  所以定时器上的时间并不是严格意义上的执行时间,  因为可能主队列执行的时间就超过了2秒, 但是cpu处理的速度很快,误差一般不会太大;

关于这个定时器分为以下几种情况来讲;

① 如果主队列任务执行完毕, 副队列中的定时器任务还没有到时间执行, 该cpu是如何执行。

cpu一定是在计算定时器的时间;

②如果主队列任务执行完毕,副队列中有两个定时器; 该如何执行;

最开始放入副队列时, 一定会给这个任务一个序号;  例如 一个是1秒的定时器另外一个是2秒的定时器; 那么就给1秒的定时器一个 序号为1的标记;

但我觉得设计模式为应该为权重最为合适;

例如; 不给权重的最先执行; 有权重的 按照权重大小执行;  例如没有时间延迟的 就不给权重(等待主队列执行完就执行副队列当中的任务);

权重的大小就是执行的时间; 例如给第一个需要权重的为1(数值小则先执行);后面又发现一个需要权重的,但是需要比第一个执行的时间早. 那么就为0,但这里有又出现一种情况, 后面又来一个 在0和1之间的权重怎么办;难道要开辟小数点吗?权重重新排序; 或者以小数方式来, 我觉得不太可能,因为计算机计算小数点会比较麻烦;

如果只考虑定时器这种特殊情况, 那么我们直接把定时的时间作为权重数就好了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值