首页 > 系统相关 >多线程和多进程

多线程和多进程

时间:2023-06-12 09:33:13浏览次数:33  
标签:20 线程 IO 进程 核数 多线程 CPU

在真实业务中不单单会涉及CPU计算,还有网络IO和磁盘IO处理,这些处理是非常耗时的。如果一个线程整个流程是上图的流程,真正涉及到CPU的只有2个节点,其他的节点都是IO处理,那么线程在做IO处理的时候,CPU就空闲出来了,CPU的利用率就不高。

多线程:提升CPU利用率。

 

最佳线程数目 = ((线程等待时间+线程CPU时间)/线程CPU时间 )* CPU数目

如:我们的服务器CPU核数为4核,一个任务线程cpu耗时为20ms,线程等待(网络IO、磁盘IO)耗时80ms,那最佳线程数目:( 80 + 20 )/20 * 4 = 20。也就是设置20个线程数最佳。

CPU密集型:操作内存处理的业务,一般线程数设置为:CPU核数 + 1 或者 CPU核数*2。核数为4的话,一般设置 5 或 8

IO密集型:文件操作,网络操作,数据库操作,一般线程设置为:cpu核数 / (1-0.9),核数为4的话,一般设置 40

 

标签:20,线程,IO,进程,核数,多线程,CPU
From: https://www.cnblogs.com/pass-ion/p/17474106.html

相关文章

  • 由问题“如何将进程A的标准输出重定向为进程B的标准输入"引发的思考
    由问题“如何将进程A的标准输出重定向为进程B的标准输入"引发的思考若两个进程都是通过bash的同一条命令来启动,可以简单得使用bash的管道来完成。但当进程B是已经在运行状态的程序(如服务器程序),该怎么实现这个功能呢?为简化讨论,进程A取cat/echo等带输出的待启动程序,进程B对应的程......
  • [转][Java]多线程写法
     多线程 闭包写法: 简化写法: ......
  • Fabric不能启动后台进程问题
    在用Fabric启动远程后台进程时,由于自己的后台程序使用类似下面的方式后台运行,导致后台进程不能启动成功 javaMyServer&看了一下官方文档,说是有几种方式可以解决这个问题,下面是我使用的方法首先修改自己的启动后台进程的脚本 nohupjavaMyServer&>/dev/null&然后......
  • java多线程基础的学习
    java多线程学习(主要围绕着线程的实现、状态、同步、通信以及高级主题如线程池)1.线程、进程、多线程进程:正在进行中的程序,一个程序的执行过程,需要资源:内存、cpu。线程:属于进程,指的是一个可以独立运行的代码片段(执行单元、执行路径)。一个进程中有多个可以独立运行的执行单元,这......
  • 使用双重检查锁定技术保证多线程中单例模式的线程安全
    使用双重检查锁定技术保证多线程中单例模式的线程安全前言单例模式是一种设计模式,保证一个类只有一个实例,并且在整个应用中共享。它适用于需要控制对共享资源的访问,例如数据库连接、配置文件或日志记录器。但是,在多线程环境下实现单例模式可能比较棘手。如果多个线程同时尝试创......
  • 5.28学习总结thread多线程理解
    多线程早在大二刚来的时候就听王建民老师提到过,但是当时觉得多线程肯定很难,而且现在也用不到,就没有接触。现在看来多线程的学习还是比较简单的。下面演示代码均为PythonfromthreadingimportThreadth=thread(target=,args=())#target指向新线程执行的目标函数,args中......
  • trc golang 进程请求追踪包
    trc是一个方便的golang进程请求追踪框架,可以提供方便的请求追踪查看参考使用代码来说官方示例,完整的可以查看官方packagemain import("context""fmt""log""math/rand""net/http""net/http/httptest"_"net/http/pprof""strings""t......
  • mysql 进程初始化killed问题
    问题描述:[root@it01soft]#/mysql/mysql57/bin/mysqld--defaults-file=/etc/my.cnf--user=mysql--initialize-insecure--consoleKilled问题分析:1.查看错误日志,错误日志报错如下:[root@it01soft]#more/mysqldata/mysql_3306/log/mysql-error.log2023-06-09T19:49:59.796928......
  • QT多线程(线程互斥)
    (文章目录)前言线程互斥是指在多线程并发执行时,为避免多个线程访问共享资源时发生冲突而采取的一种机制。本篇文章我们就这个问题来了解一下什么叫线程互斥,又如何解决线程互斥的问题。一、导致问题产生的原因和解决方法如果多个线程同时访问同一共享资源,可能会导致数据不一致......
  • QT多线程基础
    (文章目录)前言本篇文章来讲解一下QT中的多线程使用方法。其实线程这个概念对于我们来说并不陌生,main函数在多线程中一般就被称为主线程。在QT中,使用QThread类可以方便地创建新的线程并在其中执行任务。以下介绍一些常用的QT多线程的技术和方法。一、多线程概念介绍多线程是......