Thread.Sleep(0)
来源:互联网 发布:spark实现knn算法 编辑:程序博客网 时间:2024/06/06 07:46
今天在看 EnterpriseLibrary 源文件时,看到如下的代码,这个代码可以比较经典的解释Thread.Sleep(0)的用途。代码如下:
Hashtable inMemoryCache;CacheItem cacheItemBeforeLock = null;// ..... 一些其他代码
// 通过循环,以获得 cacheItemBeforeLock 的控制权。bool lockWasSuccessful;do{ lock (inMemoryCache.SyncRoot) { // ..... lockWasSuccessful = Monitor.TryEnter(cacheItemBeforeLock); } if (lockWasSuccessful == false) { Thread.Sleep(0); }} while (lockWasSuccessful == false);try{ // 对 cacheItemBeforeLock 作一些操作 // ..... }finally{ Monitor.Exit(cacheItemBeforeLock);}
Thread.Sleep(0); 线程挂起0毫秒。表面看来这个代码是没啥意义的。
其实不然,挂起0毫秒的意义不在于0毫秒,而在于挂起2个字,线程挂起,其他线程就有机会优先执行。
上面的代码中,在Thread.Sleep(0);之前,这个线程跟其他线程争抢cacheItemBeforeLock的情况,就会因为这个挂起而得到解决。
参考:
关于Thread.Sleep(0)
http://www.cnblogs.com/zzgfly/archive/2007/07/15/818426.html
Thread.Sleep 方法 (Int32)
http://msdn.microsoft.com/zh-cn/library/d00bd51t(VS.80).aspx
- Thread.Sleep(0)
- Thread.Sleep(0)
- Thread.Sleep(0)
- 关于Thread.sleep(0)
- Thread.Sleep(0)、Thread.Sleep(1)、Thread.Yeild()
- thread.sleep(0)与thread.sleep(1)的区别
- Thread系列——Thread.Sleep(0)
- Thread.sleep(0)的意义
- Thread.sleep(0)的意义
- Thread.sleep(0)的意义
- Thread.sleep(0)的意义
- Thread.sleep(0)的意义
- Thread.sleep(0)的意义
- Thread.sleep(0)的意义
- Thread.Sleep(0)的意义
- thread.sleep()
- Thread.Sleep
- thread.sleep()
- showModalDialog()、showModelessDialog()方法使用详解
- 在href链接中截取参数
- png图片和背景变透明的方法兼容各个浏览器
- 分享一个自我发展和教育的图
- VC++ Windows平台字符透明编程大总结
- Thread.Sleep(0)
- ETL学习之七:SSIS添加包配置
- 项目经理和架构师在软件开发中的哲理性经验总结
- 切勿过早优化
- Ubuntu9.04 正式版发布时间的WEB倒计时代码
- ETL学习之八:添加日志记录
- J2EE 入门1
- SSIS处理导入数据时, 存在的更新, 不存在的插入
- 字符串处理拆分字符串到列