1.并发编程简介

1.操作系统、进程和线程
(1).操作系统
操作系统指的是管理计算机硬件与软件资源的计算机程序。

(2).进程
进程指的是程序的一次执行,是程序的真正运行实例,是资源分配的基本单位,在用户下达运行程序的命令后就会产生进程。

(3).线程
线程指的是CPU的基本调度单位,每个线程执行的都是进程代码的某个片段。

(4).三者的关系
操作系统是包含一个或多个进程的容器,而进程是包含一个或多个线程的容器。

(5).进程与线程的区别

  • 起源不同:先有进程后有线程,起初只有进程,没有线程的概念,因为微处理器的的处理速度远远高于外设(键盘鼠标等等),才诞生了线程,线程的诞生是为了提高程序的运行效率。
  • 概念不同:进程是操作系统分配资源和调度的基本单位,线程是CPU运行调度的基本单位。
  • 内存共享方式不同:通常进程之间内存不会共享(如浏览器不会访问视频播放软件的内存),通常需要高级技巧才能实现进程间通信,实现内存共享(如IPC),而线程之间的内存共享则比较容易。
  • 拥有的资源不同:线程本身是进程的一部分,所以每个线程拥有的资源肯定少于进程,而线程之间共有的内容主要是代码片段,不共有的主要是线程的堆栈和程序计数器。
  • 数量不同:一个进程里面可以有很多线程,但是至少会有一个线程。
  • 开销不同:线程的创建和终止比进程短,同一个进程内部的线程之间的切换比进程之间的切换要快,同一个进程的各个线程之间共享内存和资源文件,可以不通过内核进行通信。

2.串行、并行和并发
(1).串行和并行
串行是指一个一个的做,并行是指多个一起做,如下图所示的传输案例,一个数据块一个数据块传输称为串行传输,多个数据块一起传输称为并行传输。
在这里插入图片描述

(2).并发和并行
多个线程在一个处理器上交替运行称为并发,逻辑上的同时运行。
在这里插入图片描述
多个线程在多个处理器上同时运行称为并行,物理上的同时运行。
在这里插入图片描述

3.多线程
(1).概念
多线程是指在单个进程中运行多个线程,如果一个程序允许两个或以上的线程运行,那么它就是多线程程序。

(2).多线程示例
现实生活中的火车站买票案例(资源共享),如果一个火车站只有一个窗口卖票,那么其就是单线程工作模式。为了提高卖票效率,火车站会开多个窗口,那么就是多线程工作模式。

(3).为什么需要多线程

  • 提高CPU的利用率:目前大部分CPU都是两核或者两核以上,如果不发挥多线程的优势,始终使用单线程,就会浪费计算资源,多线程可以充分发挥多核CPU的优势,提高处理速度,避免无效等待。
  • 提升程序性能:处理器越多程序执行的就越快,但这取决于程序中代码并行的比例,并行比例越高,多处理器的效果越明显。如下图所示,横坐标是处理器个数,不同颜色表示程序中代码并行比例,纵坐标表示性能提升的倍数。
    在这里插入图片描述

(4).什么场景会用到多线程

  • 同时做多件不同的事情(异构化任务)
  • 同时做多件相同的事情(高并发任务)

(5).多线程的局限

  • 性能问题
    • 上线文切换带来的消耗
    • 异构化任务很难高效并行
  • 安全问题
    • 多线程会带来线程安全问题,包括数据安全和活跃性问题(死锁和饥饿)

4.高并发
(1).概念
高并发是指大量请求同时到达服务端的一种状态,而多线程是一种编程方式。

(2).高并发和多线程的联系
多线程是解决高并发的一种解决方案。高并发并不一定意味着是用多线程来解决的,比如使用Redis。

(3).指标

  • QPS:每秒请求数
  • PV:24小时内的点击量
  • UV:24小时内的独立访客量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值