zoukankan      html  css  js  c++  java
  • 第一部分:并发理论基础10->创建多少线程才合适

    1.为什么要使用多线程

    提升程序性能

    衡量性能指标主要由吞吐量和延迟,
    延迟:越短,程序执行的越快,性能越好
    吞吐量:单位时间能处理的请求数,吞吐量越大,程序处理的请求越多,性能越好

    核心
    第延迟,高吞吐量

    2.多线程应用场景

    优化算法
    硬件性能发挥到极致(提升IO的利用率和cpu利用率)

    多线程方案,解决cpu,io设备综合利用率的问题
    一个线程
    image
    两个线程
    image
    将cpu利用率和io利用率提升了100%,单位时间处理请求数量翻番,吞吐量提高了一倍

    多核时代,多线程可以降低响应时间,单核时代,如果没有io操作,多线程不但不会提升性能,还会性能更差。

    image

    3.创建多少线程合适

    一般程序都是cpu和io交叉进行,io速度慢,cpu快
    io操作执行时间对cpu来说非常长

    cpu密集型应用,多线程本质是提高多核cpu利用率。理论4核cpu,创建4个线程就可以了。理论上线程数量=cpu的核数,不过在工程中都设置cpu核数+1,防止线程因偶尔内存页实效或者其他原因导致阻塞时,这个额外的可以顶上,保证cpu的利用率

    io密集型应用,比较麻烦,需要进行算法的设计。cpu计算和io操作的耗时如果是1:1,那么2个线程是最合适,如果cpu和io计算的耗时比是1:2,那么3个线程比较合适。
    image
    计算公式单核:最佳线程数 = 1 + (io耗时 / cpu耗时)
    计算公式多核: 最佳线程数 = CPU核数 * [ 1 + (io耗时 / cpu耗时) ]
    那么io耗时和cpu耗时比是一个关键参数,这个参数未知,动态变化,生产环境要进行估算。做压测来验证估算。

    4.总结

    线程数不是越多越好
    硬件的性能发挥到极致

    原创:做时间的朋友
  • 相关阅读:
    linux---shell数组
    linux---shell传递参数
    Windows mysql免安装版配置。(版本号-5.6.45);
    contos 6.9 和 centos7 配置docker?
    数据库表的演化过程
    docker简单介绍。
    Linux 配置 mycat 和 分库分表配置。
    Linux 配置mysql 免安装版。
    mycat 简单介绍
    kibana 对es的简单操作。
  • 原文地址:https://www.cnblogs.com/PythonOrg/p/14955822.html
Copyright © 2011-2022 走看看