读写锁的另一种思路
多线程中如果一个锁冲突概率很小,能否简单地用校验数据来确认正确性?
如一个全局变量,存放数据: 123x
其中x为校验数据,那么每次读取时只需要校验最后一位是否为x即可判断读取的有效性,否则重新读取。
在确保读取正确性的前提下,写入后也只要再读取一次判断是否与写入值一致既可,这思路是不是和版本标记有点类似?
另外这样“非线程安全”的读写是否会造成其它未知的错误?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
不行的,校验本身就不可靠
为什么说不可靠呢?
是不是这种情况,当读取不完整数据时,有可能校验值也会=x ?
那是不是可以通过更复杂的校验位,最大程度降低这种"碰撞"?
整那么复杂,还不可靠,还不如用锁。
简单的数据可以用原子操作
锁真的能消耗你CPU那么多么? 不要走错方向!!!
校验,如果出错,大多数情况只能用忙等来等待正确。
相对来说,还不如锁呢。