一、 并行和并发的区别

并行(parallelism): 是同一时刻,两个线程都在执行。(同一时刻,可以同时处理事情的能力)
并发(concurrency): 是同一时刻,只有一个执行,但是一个时间段内,两个线程都执行了。(与单位时间相关,在单位时间内可以处理事情的能力)
并行:
例:一个食堂有8个窗口,那么在同一时间内可允许8个人同时打饭,那么说明这个食堂的并行度为 8

并发:
例:一个食堂有8个窗口,每个人打饭的时间是30秒,那么在一分钟内,这个食堂的并发度为16

二、cup

1、cpu核心数和线程数的关系

  1. 最早的时候cpu核心数与线程数的比例为 1:1。
  2. 在intel提出超线程技术之后,cpu核心数与线程数的比例为 1:2。

2.cpu时间片轮转机制
cpu时间片轮转机制是一种最古老,最简单,最公平,使用最广泛的一种算法,又称为RR(Round-Robin)调度,含义就是说,给每一个进程分配一个时间段,这个时间段就被称为这个进程的时间片(指这个进程允许运行的时间),如果到了这个时间片结束的时候,操作系统会把分配给这个进程的cup剥夺掉,分给另外一个进程,如果在这个时间内这个进程被阻塞或者执行完,cpu就会进行切换。
cpu轮转机制最重要的是一个时间片的长度

三、线程和进程的区别

  • 进程是操作系统进行资源分配和调度的一个独立单位;线程是进程的一个实体,是CPU调度和分派的基本单位
  • 一个程序至少一个进程,一个进程至少一个线程
  • 每个进程都有独立的内存地址空间;系统不会为线程分配内存,线程组之间只能共享所属进程的资源
  • 程序之间的切换会有较大的开销;线程之间切换的开销小

四、高并发编程的优缺点

优点: 充分利用cpu资源,加快用户响应时间,使程序模块化,异步化
缺点 线程共享资源,存在冲突;容易发生死锁;线程安全问题;启用过多的线程容易搞垮机器

下一篇:并发编程(2)—— 创建线程的方式