简单写了个小程序,比较了一下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

结论如下:

  1. Interlocked可以直接编译为CPU指令,速度最快,虽然功能较少但能用则用。
  2. CriticalSection(也就是lock关键字或者Monitor.Enter()方法)仅比Interlocked慢,建议使用。
  3. 对于ReaderWriterLock和ReaderWriterLockSlim,Slim快近一倍,但缺点是不能track owner,也就是同一线程不能多次进入同一个lock。Reader比Writer要慢,估计是要维护reader count的原因。
  4. Mutex,Semaphore,Event即使可以获得lock也要进入内核模式,所以最慢,要尽量避免使用。

最新文章

  1. Editbox之三个框框
  2. JSP开发环境配置问题解答
  3. LESSON THREE
  4. 套题T8&T9
  5. alfresco 5.0 document
  6. 萌货猫头鹰登录界面动画iOS实现分析
  7. (转)IOS中获取各种文件的目录路径的方法
  8. microsoft visual studio 不能逐句执行?
  9. How to get multi-touch working(Linux and Andriod)
  10. zend支持sql server
  11. ACM Let the Balloon Rise
  12. 解决Ubuntu 17.10设置面板打不开的问题
  13. Java序列化相关
  14. mysql中的prepare介绍和应用
  15. iTOP-4418开发板Ubuntu系统烧写方法分享
  16. vim 初识
  17. Quartz 原理
  18. mui中图片手势缩放功能的实现
  19. Hadoop日记Day7---HDFS的WED端口
  20. YUI JS压缩Ant脚本

热门文章

  1. UI系统的分类
  2. Arduino通过串口监视器收发数据
  3. 07-图5 Saving James Bond - Hard Version (30 分)
  4. 在Eclipse打开css文件时,会自动调用文本编辑器打开,而不是在Eclipse中打开
  5. Gradle系列教程之依赖管理
  6. Asp.net 与 Core .net 用法区别
  7. layui上传文件组件(前后端代码实现)
  8. 【Alpha】“北航社团帮”小程序v1.0发布声明
  9. 【技术博客】MySQL和Django常用操作
  10. Awesome Knowledge-Distillation