zoukankan      html  css  js  c++  java
  • .NET中如何解决线程安全(悲观锁、乐观锁)

    并发安全:

    系统中某一时刻多个线程并发访问一段有线程安全性问题的代码、方法后,最终出现不正确的结果或者并非最初所预料的结果

    如何解决:

    解决并发安全有两种解决方案:悲观锁、乐观锁

    悲观锁:以独占的方式执行一段代码,如:Lock、Monitor、Mutex、自旋锁、事件对象(AutoResetEvent、ManualResetEvent)

    乐观锁:乐观锁不是锁,应该叫乐观机制。乐观的认为数据不会被其他线程修改,在修改值时判断值是否被修改,程序中需要借助CAS算法实现乐观锁。乐观锁适用于读多写少的场景

    CAS:

    CAS,是“CompareAnd Swap”的缩写,中文简称就是“比较并替换”,在CAS算法中,它使用了3个基本操作数:内存地址对应的值V,旧的预期值A(旧值),要修改的新值B(新值),

    当且仅当预期值A和内存值V相同时,才将内存值修改为B,否则什么都不做,最后返回现在的V值。

    具体可以看我这篇文章:https://www.cnblogs.com/fanfan-90/p/12996535.html(原子操作-Interlocked(CAS))

    参考:

    https://www.toutiao.com/i6851840638191665677

  • 相关阅读:
    空类型指针实践
    参数作用域实践
    内联函数实践:有疑惑未解决
    可变参数实践
    默认参数实践
    函数指针实践
    Windows下开发环境搭建
    Test
    C++ 左值与右值
    如何打包成多个资源文件
  • 原文地址:https://www.cnblogs.com/fanfan-90/p/12006965.html
Copyright © 2011-2022 走看看