C# Interlocked 实现线程同步
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
原子操作
原子操作是指不会被线程调度机制打断的操作这种操作一旦开始就一直运行到结束中间不会有任何线程切换。
悲观锁
解决线程冲突常用锁但是lock是阻塞式还容易因为使用不当而导致死锁。
这种锁属于悲观锁阻塞式的锁。
乐观锁
默认不冲突进行操作如果失败后重试直到成功为止这个过程也叫自旋。
CAS(Compare and swap) 比较和交换
CAS是“Compare And Swap”的缩写中文简称就是“比较并替换”在CAS算法中它使用了3个基本操作数内存地址对应的值V旧的预期值A旧值要修改的新值B新值当且仅当预期值A和内存值V相同时才将内存值修改为B否则什么都不做最后返回现在的V值。
Interlocked
操作 | 描述 |
---|---|
Interlocked.Increment | 原子操作递增指定变量的值并存储结果。 |
Interlocked.Decrement | 原子操作递减指定变量的值并存储结果。 |
Interlocked.Add | 原子操作添加两个整数并用两者的和替换第一个整数 |
Interlocked.Exchange | 原子操作赋值 |
Interlocked.CompareExchange(ref a, b, c); | 原子操作a参数和c参数比较 相等b替换a不相等不替换。方法返回值始终是第一个参数的原值也就是内存里的值 |