原文转自 https://blog.csdn.net/ma100/article/details/51645645

 

简单的说三条:

多人读,不需要

一读一写要加

多人写要加

 

常见错误

1读1写没事,读写的内存约多,越容易出事,因为不是原子操作

对int/int64/char型是原子操作, 可不加锁,   其实没人保证这一点的, 要不c++1x还出个原子模板类干什么

 

常用实例

vector的[]操作是安全的, 如一个线程里 buf[0]++, 另一个buf[1]--是安全的, 因为[]的实现是 start+n, 多线程操作符合多人只读条件

 

最后锁分为互斥(mutex)和自旋(spin)锁

前者,在第一个人锁住后, 第二个人进不去时会sleep, cpu可以去干别的

spin锁的话,第二个人会一直在门口等, cpu也一直占着,缺点显而易见, 有点是进去快, 效率高

相关文章:

  • 2021-08-25
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-15
  • 2021-12-23
  • 2022-12-23
猜你喜欢
  • 2021-12-09
  • 2022-12-23
  • 2022-12-23
  • 2021-10-30
  • 2022-12-23
  • 2022-12-23
  • 2021-09-07
相关资源
相似解决方案