顺序锁如何确保您的数据一致?

时间:2019-12-10 06:08:24

标签: locking seqlock

我已经阅读了数十篇文章,它们仅描述了seq锁是什么。他们都没有深入探讨它为什么起作用或回答我的疑问。考虑这种情况:

P:应该由顺序锁保护的受保护变量

W:编写器线程

R:阅读器线程Seq:序列变量

L:作者的自旋锁

  1. P = 184。
  2. 阅读器R检查Seq。 Seq = 2。
  3. 作家W什么都不做。
  4. 读取器R获取保护变量P的值并将其存储在V中。因此V = 184。
  5. 阅读器R检查Seq。 Seq = 2,表示作者已更新该值。继续..
  6. 作家W更新P。P = 185
  7. 阅读器R在V上执行计算。

** V等于184,而不是185 !!!计算是错误的! **

根据此示例,我根本看不到顺序锁如何添加任何值。如果没有锁,则在读者不希望它保护的情况下,作者可以自由更新受保护的数据。

0 个答案:

没有答案