• 单核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,又可以减少线程切换的开销。

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

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

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

  • 相关阅读:
    敢于尝新 却沦为试错的小白鼠?
    构建坚固防线:提升网站整体安防水平的有效途径
    Mysql高级篇学习总结6:索引的概念及理解、B+树产生过程详解、MyISAM与InnoDB的对比
    在 JavaScript 中访问对象属性的 3 种方法
    微信小程序将后端返回的图片文件流解析显示到页面
    企业与企业之间保密协议
    Vant Weapp的Slider组件自定义button
    【Verilog】HDLBits题解——Circuits/Basic Gates
    多线程&并发篇---第十四篇
    将ChatGPT与物理机器人结合,波士顿动力开发了一只怪物!
  • 原文地址:https://blog.csdn.net/biyusr/article/details/126925073