C#中各种Lock的速度比较
2024-09-02 15:38:52
简单写了个小程序,比较了一下C#中各种Lock的速度(前提是都没有进入wait状态)。
各进入离开Lock 1kw次,结果如下:
Lock | Time (ms) |
No lock | 58 |
CriticalSection | 726 |
Interlocked | 344 |
Readerslim | 1932 |
Writerslim | 1513 |
Reader | 3754 |
Writer | 3430 |
Mutex | 24998 |
Semaphore | 24197 |
Event | 22549 |
结论如下:
- Interlocked可以直接编译为CPU指令,速度最快,虽然功能较少但能用则用。
- CriticalSection(也就是lock关键字或者Monitor.Enter()方法)仅比Interlocked慢,建议使用。
- 对于ReaderWriterLock和ReaderWriterLockSlim,Slim快近一倍,但缺点是不能track owner,也就是同一线程不能多次进入同一个lock。Reader比Writer要慢,估计是要维护reader count的原因。
- Mutex,Semaphore,Event即使可以获得lock也要进入内核模式,所以最慢,要尽量避免使用。
最新文章
- Editbox之三个框框
- JSP开发环境配置问题解答
- LESSON THREE
- 套题T8&;T9
- alfresco 5.0 document
- 萌货猫头鹰登录界面动画iOS实现分析
- (转)IOS中获取各种文件的目录路径的方法
- microsoft visual studio 不能逐句执行?
- How to get multi-touch working(Linux and Andriod)
- zend支持sql server
- ACM Let the Balloon Rise
- 解决Ubuntu 17.10设置面板打不开的问题
- Java序列化相关
- mysql中的prepare介绍和应用
- iTOP-4418开发板Ubuntu系统烧写方法分享
- vim 初识
- Quartz 原理
- mui中图片手势缩放功能的实现
- Hadoop日记Day7---HDFS的WED端口
- YUI JS压缩Ant脚本
热门文章
- UI系统的分类
- Arduino通过串口监视器收发数据
- 07-图5 Saving James Bond - Hard Version (30 分)
- 在Eclipse打开css文件时,会自动调用文本编辑器打开,而不是在Eclipse中打开
- Gradle系列教程之依赖管理
- Asp.net 与 Core .net 用法区别
- layui上传文件组件(前后端代码实现)
- 【Alpha】“北航社团帮”小程序v1.0发布声明
- 【技术博客】MySQL和Django常用操作
- Awesome Knowledge-Distillation