从代码中可以看到,命中的是函数,也就是我们用户态代码的 mre.Reset(); 函数,如果大家感兴趣,可以挖一下它的汇编代码,很清楚的看到这个方法中有一些 lock 语句,所以性能上会所有下降哈 。
3.
要说 Event 事件锁维护的是 bool 变量,那就属于 int 变量了,为了方便说明继续上一个例子,观察方式和 Event 基本一致 。
internal class Program{static Semaphore semaphore = new Semaphore(10, 20);static void Main(string[] args){Console.WriteLine("handle=" + semaphore.Handle.ToString("x"));for (int i = 0; i < 100; i++){semaphore.WaitOne();Console.WriteLine($"{i}:已减少 1,请观察");Console.ReadLine();}Console.ReadLine();}}
接下来用进入到本机内核态观察 =270 所对应的 内核地址。
从图中可以非常清楚的看到这里的数字在不断的减小,其实想也能想到,少不了一些 CPU 级 lock 锁在里面 。
- 淘宝在hbase中的应用和优化
- 16Prism框架--模块
- mysql优化六:深入理解mysql事务隔离级别和锁机制
- C#在汽车行业中的应用
- linux 添加忽略文件git,忽略Git中的文件和目录,讲解
- 2 关于深度学习中的预训练
- 海关锁是什么意思
- 深度学习在自然语言处理中的应用
- 解决线程安全问题_Lock锁
- 迭代学习控制算法在自动驾驶车辆轨迹跟踪中的应用