基础概念:
什么是进程:
CPU中操作资源的最小单位是进程 ,在我们每启动一个程序,就相当于启动了一个进程,
什么是线程
CPU调度的最小单位,线程必须依赖于进程存在,在一个进程中可以拥有多个线程,这些线程共享进程的数据。
线程数和CPU核心数的关系:
一个处理器核心同时只能执行一个线程 。核心数越多,同时执行的线程就越多
为什么系统要限制线程数:
因为每创建一个线程都需要分配内存资源。线程太多会浪费内存资源。Linux系统最多开1000个线程数,Windows系统最多开2000个线程数。我们可以用线程池来解决线程需求过多的情况。
RR调度:
也叫CPU时间片轮转,因为CPU执行一条指令非常的快,一毫秒就可以执行数十万的指令,所以CPU将时间进行切片,CPU执行一个进程时可以轮转到别的进程,因为执行速度太快,给人的感觉就像是这些进程在同时进行一般。
并发,并行,串行:
并发:指在一个时间段内执行了多个任务,但是同一时刻只有一个任务在进行,重点是一段时间内。举例A在吃饭,吃饭中途来了个电话,你暂停了吃饭的动作去接电话,接完电话你继续吃饭。
并行:指在同一个时间点执行了多个任务,重点是同一时刻。 举例B在吃饭,吃饭途中也来了个电话,B没有暂停吃饭的动作,而是一遍接电话一遍吃饭,两个动作同时进行着。
并行要求程序能够同时执行多个操作,而并发只是要求程序假装同时执行多个操作
串行:指任务必须按照顺序来执行,一个任务结束才能进行下一个任务。举例做饭,你先烧水,锅中加水30秒,水烧开需要5分钟,而你却要等着水烧开了再去煮米饭,煮米饭需要15分钟,又要等待米饭煮熟再去做后面的流程。 (并发就像是同步的串行,锅里加完水不在等待水开,而是立刻去洗菜,切肉,煮米饭。不在等待任务执行完成,而是在这一段时间完成多个任务。)
高并发编程的好处:模块化,异步化,简单化
举例: 酒店后厨收到订单开始每一盘菜都洗菜,择菜,切菜切肉,最后炒菜。如果是串行来走的&#x