设计原则

  • 确保访问是安全

没有线程看到线程的修改过程。

防止多个互斥量的死锁

防止锁期间的某些操作会抛出异常,导致错过解锁的时机,引起死锁这类的问题。

  • 真正的并发

如何让序列化访问最小化,让真实并发最大化,说白了就是锁的范围越小越好。

比如队列,如果对 push 和 pop 都只用锁,那个 push 和 pop 并不能同时发生.解决思路是加条件变量。

有锁

无锁