【总结】简单来说,Interlocked 类提供的方法给我们带来了方便快捷操作字段的方式 , 比起使用锁同步的编程方式来说,要轻量不少,执行效率也大大提高 。但是该技术并非银弹 , 一定要考虑清楚使用的场景后再决定使用,比如服务器web应用下,多线程执行大量耗费CPU的运算 , 可能会严重影响应用吞吐量 。虽然表面看起来执行这个单一的任务效率高一些(代价是CPU全部扑在这个任务上,无法响应其他任务),其实在我们的测试中 , 总共执行了 10000000 次运算,这种场景应该是比较极端的,而且在web应用场景下,用 lock 的方式响应时间也没有达到不能容忍的程度,但是用 lock 的好处是cpu可以处理其他用户请求的任务,极大提高了吞吐量 。
我们建议在竞争较少的场景 , 或者不需要很高吞吐量的场景下(简单说是CPU时间不那么宝贵的场景下)我们可以用 Interlocked 类来保证操作的原子性,可以适当提升性能 。而在竞争非常激烈的场景下,一定不要用 Interlocked 来处理原子性操作 , 改用 lock 方式会好很多 。
【源码地址】https://github.com/sevenTiny/CodeArts/blob/master/CSharp/ConsoleAppNet60/InterlockedTest.cs
推荐阅读
- 无期迷途角色重置方法
- 怎么练轻功儿童(普通人怎么练飞行术)
- 在家怎么练轻功(怎样练轻功在空中飞)
- 20_Vue如何监测数组类型数据发生改变的?
- 二 【单元测试】Junit 4--eclipse配置Junit+Junit基础注解
- oppofindx3pro跑分_oppofindx3pro安兔兔跑分
- 只知道微信昵称删除了对方怎么找对方(彻底删除对方微信)
- 19_Vue如何监测到对象类型数据发生改变的?
- 三、Ocelot请求聚合与负载均衡
- 荣耀X30max手机参数_荣耀X30max详细配置