并发理论基础

一、什么是线程、进程

1、进程、线程的定义

进程:程序的运行实例(程序的一次执行),是资源分配的基本单位。

线程:进程实际执行的细分,将任务切分成可供CPU调度的多个单位。

2、进程、线程的关系

进程是线程的容器,即同一个进程可以包含多个线程,多个线程可以共享同一进程间的资源。

例如:可以把厨房比作线程,厨房内的厨师比作进程,要实现的功能是做菜,一个厨房至少要拥有一个厨师才可以完成做菜的功能,也可以有多个厨师来分别执行洗菜、切菜、炒菜的工作,同时厨师间协作所需的锅碗瓢盆归属于同一个厨房,可以相互共享。

3、进程、线程的不同

  •    起源不同

先有进程、为提高CPU的利用率才有了进程

  •    概念不同

进程是系统资源分配的单位

线程是CPU的调度单位

  •   内存共享方式不同

进程与进程之间的内存不共享

同一进程的线程与线程间内存共享

  • 拥有的资源不同

线程拥有的资源取决于进程拥有的资源

  • 数量不同

对于同一个程序,进程只能有一个,线程可以有多个

  • 开销不同

线程较于进程更加轻量级,进程的创建、终止时间、上下文切换时间比线程长

同一进程的各个线程共享的资源可以不通过内核进行通信

二、什么是串行、并行、并发

1、串行、并行

串行是多个任务按照一定顺序依次执行

并行是多个任务同时执行

2、并发、并行

并发是单个处理器上的多个任务同时执行,因为单核处理器处理多个任务时会发生上下文切换,故此时并不是真正的同时执行,是因处理器处理速度较快,而看起来像同时执行(逻辑上的同时执行)

并行是多个处理器上的多个任务同时执行(物理上的同时执行)

3、并发、并行的异同

相似:

都具有并发性,即多个任务可以在重叠的时间内运行,且不影响最终的执行结构

不同:

并发单核处理、并行多核处理

三、什么是多线程

1、多线程定义

在同一个进程内运行了多个线程即为多线程。

2、引入多线程的目的

最主要的目的是提高CPU的利用率,达到如下的效果:

  • 提高处理速度

  • 避免无效等待

CPU会等待IO执行完毕后在执行其他任务,由于CPU的处理速度远大于IO的处理速度,故造成了资源浪费,此时可以引入多线程让CPU执行其他的任务

  • 提高用户体验

并行处理,不同的任务交由不同的线程去处理,缩短整体的等待时间,减少卡顿

3、多线程的局限

性能问题:上下文切换带来的消耗

异构化任务(任务结构不一样)很难高效并行

线程安全问题:包括数据安全问题(共享资源的访问),线程活跃性问题(线程饥饿、死锁、活锁)

四、什么是高并发

1、高并发的定义

高并发是指多个请求同时进入服务器

2、多线程与高并发的关系

多线程是高并发的其中一种解决方案,可以解决高并发导致的一些问题

3、高并发的指标

  • QPS(每秒查询数):每秒请求的数量
  • 带宽
  • PV(综合浏览量):一天内的页面访问量或点击量
  • UV(独立访客浏览量):对PV按用户进行去重
  • 并发连接数:发起请求后建立的TCP连接总数
  • 服务器平均请求等待时间:服务器处理一个请求平均所需时间

五、什么是同步与异步、阻塞及非阻塞

1、同步与异步(消息的通信机制)

被调用者是否主动通知

同步:调用者主动等待被调用者的结果

异步:被调用者主动通知调用者结果

例如:

吃饭时进行点单,点好单后,排队自取(同步),服务员送到餐桌上(异步)

2、阻塞与非阻塞(程序等待调用结果时的状态)

调用者是否等待处理结果

阻塞:调用者在获得调用结果前挂起(等待),有结果后继续执行

非阻塞:调用者在获得结果前无需挂起(等待),仍然可以执行其他事

例如:

吃饭时进行点单,点好单后,在窗口等待食物做好(阻塞),过一段时间来拿(非阻塞)

3、同步异步、阻塞非阻塞的组合例子

同步阻塞

无声响的壶烧水,需要人一直守着水壶等烧开,在此期间人一直处于等待状态

同步非阻塞

无声响的壶烧水,每过一段时间后回来查看水壶是否烧开,在此期间可以做其他事

异步阻塞

有声响的壶烧水,人一直等待水壶烧开发出声响,在此期间人一直处于等待状态

异步非阻塞

有声响的壶烧水,水壶烧开后会发出声响告诉烧水人水烧好了,在此期间可以做其他事

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值