【计算机知识串讲】编程中的并发与锁
https://www.bilibili.com/video/BV1Ng4y1q7bm 学习笔记
南北桥
南桥
带宽比较低的设备
USB 鼠标 键盘
北桥
高速访问 带宽高的设备
CPU RAM PCI-E
CPU常见参数
架构
- X86 PC 服务器
- ARM 只能手机移动设备
- MIPS 小型路由器
频率
5GHz 每秒钟进行5G次基础指令运算
核心数和线程数
一个cpu芯片可以集成多个 cpu 核心,可以并行处理任务。一般核心数=线程数
cache
CPU的缓存是对主存的高速缓存。
CPU状态查看 linux
- cat /proc/cpuinfo
- top
- vmstat
- us 用户使用
- sy 系统使用
- id 空闲CPU
- wa 等待IO 的CPU
- st 虚拟机
- uptime 电脑运行了多长时间 负载
- load average 平均负载
- 正常状态 比当前CPU低
进程 线程 协程
进程
资源调度管理的最小单位
进程中的所有线程共享一套地址空间
线程
多线程 在CPU阻塞情况下很有用
线程的五种状态 只有运行中占用 CPU 资源
线程创建销毁 和 切换
线程池 进行管理 线程的 创建 和 销毁 减少了消耗
协程
协程能够减少一部分的 线程切换
协程,英文Coroutines,是一种比线程更加轻量级的存在。正如一个进程可以拥有多个线程一样,一个线程也可以拥有多个协程。
协程不是进程或线程,其执行过程更类似于子例程,或者说不带返回值的函数调用。
Synchronized 关键字
如果是 先state=0;然后 持有者 = null;
state 等于零 之后 会调用 lock()
持有者 = null 和 lock 的 持有者 = 当前线程 可能会 冲突
但是 先 持有者 = null; 再 state = 0; 就会避免这个问题的发生。