标签:pipe reload 对象 删除 pip 指令 调度 信号 ado
并发编程的目的是:
原子操作
锁
自旋锁(spinlock)
锁 + 自旋
信号量(semaphore)
锁 + 等待队列
互斥量(mutex)
binary 信号量
条件变量(condition variable)
管程(monitor)
高级同步元素,编程语言实现。有(变量 + 操作组成)
多核CPU,每个CPU单独的Cache,主内存只有一个。
重排序
内存屏障
屏障导致缓存flush和失效
简单分为四类:
另外锁/原子量的acquire/release操作隐含了内存屏障的作用。
还有sleep thread.start thread.join
happens-before
acquire-release语义
volatile
java 可见性(约束),下一个读一定看见上一次写。
C++ 不要排序,驱动IO,内容无法推测。
相似点都是加入内存屏障(memory barrier),实现缓存flush和缓存失效。
volatile插入内存屏障表,根据机器架构以及前后关系会删除多余的内存屏障。
final
final值初始化以后在不同线程不应改看到不一样的值。
规则:
仅仅在某些乱序处理器需要特殊处理。
死锁
死锁产生的四个条件:
避免死锁办法:
避免死锁C++
诊断死锁
标签:pipe reload 对象 删除 pip 指令 调度 信号 ado
原文地址:https://www.cnblogs.com/finesimpletop/p/13287681.html