单核CPU如何执行多线程

概述

在多处理器系统中,多个线程在不同的内核上同时执行。
例如,如果有两个线程和两个内核,则每个线程将在单个内核上运行。在单处理器系统中,多个线程执行一个接一个的执行,或者等到一个线程完成或被操作系统抢占,这取决于线程的优先级和操作系统策略。但是正在运行的线程给人一种错觉,认为它们可以同时运行,相对于用户空间应用程序所需的应用程序响应时间。

时间比较(示例):

如果两个线程各自花费10us执行,那么在2处理器系统上,净时间为10us

如果两个线程各自花费10us执行,那么在1个处理器系统上,净时间为20us

问题

由于现在大多计算机都是多核CPU,多线程往往会比单线程更快,更能够提高并发,但提高并发并不意味着启动更多的线程来执行。更多的线程意味着线程创建销毁开销加大、上下文非常频繁,你的程序反而不能支持更高的TPS。

时间片

多任务系统往往需要同时执行多道作业。作业数往往大于机器的CPU数,然而一颗CPU同时只能执行一项任务,如何让用户感觉这些任务正在同时进行呢? 操作系统的设计者 巧妙地利用了时间片轮转的方式

时间片是CPU分配给各个任务(线程)的时间!

思考:单核CPU为何也支持多线程呢?

线程上下文是指某一时间点 CPU 寄存器和程序计数器的内容,CPU通过时间片分配算法来循环执行任务(线程),因为时间片非常短,所以CPU通过不停地切换线程执行。

换言之,单CPU这么频繁,多核CPU一定程度上可以减少上下文切换。

总结

1.(单核CPU)同一时间,cpu只能处理1个线程,只有1个线程在执行

2.多线程同时执行:是CPU快速的在多个线程之间的切换

3.cpu调度线程的时间足够快,就造成了多线程的“同时”执行

4.如果线程数非常多,cpu会在n个线程之间切换,消耗大量的cpu资源

5.每个线程被调度的次数会降低,线程的执行效率降低

建议

合理设置线程数目既可以最大化利用CPU,又可以减少线程切换的开销。

  • 高并发,低耗时的情况,建议少线程。

  • 低并发,高耗时的情况:建议多线程。

  • 高并发高耗时,要分析任务类型、增加排队、加大线程数

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值