From 4b28b6580fb9eff667fe3f6d555f8939c52958bf Mon Sep 17 00:00:00 2001 From: yuanguangxin <274841922@qq.com> Date: Tue, 23 Jun 2020 11:09:48 +0800 Subject: [PATCH] update --- .idea/workspace.xml | 36 +++++++++++++++++++----------------- Rocket.md | 4 ++++ 2 files changed, 23 insertions(+), 17 deletions(-) diff --git a/.idea/workspace.xml b/.idea/workspace.xml index fa90d3c..d10f85c 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -20,8 +20,8 @@ - + @@ -709,10 +711,10 @@ - + - + @@ -784,10 +786,10 @@ - - + + - + @@ -807,11 +809,11 @@ - - + + - + diff --git a/Rocket.md b/Rocket.md index 0440c9d..474124d 100644 --- a/Rocket.md +++ b/Rocket.md @@ -719,6 +719,10 @@ Kafka最初考虑的问题是,customer应该从brokes拉取消息还是brokers 4. 进程间不会相互影响,一个线程挂掉将导致整个进程挂掉。 5. 系统在运行的时候会为每个进程分配不同的内存空间;而对线程而言,除了CPU外,系统不会为线程分配内存(线程所使用的资源来自其所属进程的资源),线程组之间只能共享资源。 +### 多线程和单线程 + +线程不是越多越好,假如你的业务逻辑全部是计算型的(CPU密集型),不涉及到IO,并且只有一个核心。那肯定一个线程最好,多一个线程就多一点线程切换的计算,CPU不能完完全全的把计算能力放在业务计算上面,线程越多就会造成CPU利用率(用在业务计算的时间/总的时间)下降。但是在WEB场景下,业务并不是CPU密集型任务,而是IO密集型的任务,一个线程是不合适,如果一个线程在等待数据时,把CPU的计算能力交给其他线程,这样也能充分的利用CPU资源。但是线程数量也要有个限度,一般线程数有一个公式:最佳启动线程数=[任务执行时间/(任务执行时间-IO等待时间)]*CPU内核数超过这个数量,CPU要进行多余的线程切换从而浪费计算能力,低于这个数量,CPU要进行IO等待从而造成计算能力不饱和。总之就是要尽可能的榨取CPU的计算能力。如果你的CPU处于饱和状态,并且没有多余的线程切换浪费,那么此时就是你服务的完美状态,如果再加大并发量,势必会造成性能上的下降。 + ### 进程的组成部分 进程由进程控制块(PCB)、程序段、数据段三部分组成。