并发的必知概念

简介: 并发的必知概念

程序、进程与线程


程序是静态的概念,windows下通常指exe文件。


进程是动态的概念,是程序在运行状态,进程说明程序在内存中的边界。(进程是互不干扰的,比如开启两个记事本,这就是两个进程,这两个记事本的进程并不互相影响,可以分别进行记录)


线程是进程内的一个“基本任务”,每个线程都有自己的功能,是cpu分配和调度的基本单位。

并行 和并发


并行是多个指线程一起执行

并发是指多个线程交替执行


如下图


image.png

并发与并行.png


同步和异步

同步是指当当前任务没有执行完成,不能进行下一个任务

异步是指当前任务尚未完成,但是处于空档期,可以去执行其他任务


image.png

image.png


临界区

临界区用来表示一种公共资源与共享数据,可以被多

个线程使用。


同一时间只能有一个线程访问临界区(阻塞状态),

其他资源必须等待。


死锁、饥饿、活锁

死锁是指多个线程互相在运行过程中相互竞争某正资源,而处于僵持状态。


饥饿是指线程具有优先级的特性,某些线程可能因为优先级问题,而拿不到资源,处于饥饿状态


活锁是指多个线程互相谦让而处于阻塞状态,这就相当于两个在走廊相遇的人:甲向他自己的左边靠想让乙过去,而乙向他的右边靠想让甲过去。可见他们阻塞了对方。甲向他的右边靠,而乙向他的左边靠,他们还是阻塞了对方。


1.png

image.png


线程安全

在拥有共享数据的多条线程并行执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染等意外情况。



相关文章
|
4月前
|
算法 安全 编译器
并发的三大特性
并发的三大特性
41 1
|
3月前
|
资源调度 安全 调度
在讨论Python多线程与并发
在讨论Python多线程与并发
12 2
|
9月前
|
架构师
架构系列——架构师必备基础:并发、并行与多线程关系
架构系列——架构师必备基础:并发、并行与多线程关系
|
9月前
|
Java
多线程的相关概念
多线程的相关概念
45 1
|
7月前
|
Java
并发三大特性
并发三大特性
21 0
|
12月前
|
消息中间件 存储 算法
多线程概念,常用接口与多进程之间的比较
多线程概念,常用接口与多进程之间的比较
51 0
|
安全 Linux 内存技术
Linux驱动开发——并发和竞态(概念介绍①)
Linux驱动开发——并发和竞态(概念介绍①)
116 0
Linux驱动开发——并发和竞态(概念介绍①)
|
存储 缓存 分布式计算
|
Java 调度
多线程基本概念(并发与并行、线程与进程)和入门案例
多线程基本概念(并发与并行、线程与进程)和入门案例
|
Java 调度
并发的本质是什么?
并发的本质是什么?
193 0
并发的本质是什么?