码迷,mamicode.com
首页 > 其他好文 > 详细

lock锁

时间:2015-01-23 20:02:14      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:

原文:http://www.cnblogs.com/wolf-sun/p/4209521.html

lock

临界资源:一次仅允许一个进程使用的共享资源。

临界区:每个进程中访问临界资源的那段代码称为临界区,对于同一个临界资源,可以有多个临界区。

lock关键字可以确保当一个线程位于代码临界区时,另一个线程不会进入临界区。如果其他线程尝试进入锁定的代码,则它将一直等待(即锁定),知道该对象被释放。

lock关键字在块的开始处调用Enter,而在块的结尾处调用Exit。通常,应避免锁定public类型,否则实例将超出代码的控制范围。

Enter指的是Monitor.Enter(获取指定对象上的排他锁),Exit值的是Monitor.Exit(释放指定对象上的排他所),这里的指定对象指的是临界资源。

下面来说说,我在图片监听和上传中的代码,程序会将监听目录下面的新图片文件保存到一个字典中。

技术分享

这里的_fileList就是我们的临界资源。向字典中添加内容,这个是操作系统的监听线程去完成的。

技术分享

将图片上传到服务器,然后从字段中删除上传过的数据。这个操作是我们自己开启的一个上传线程。

技术分享

 

由于SaveFile方法中操作字典的长度,那么问题来了:如果上传的时候,监听线程又向字典中写入数据,就会造成数据的混乱。

 

lock锁

标签:

原文地址:http://www.cnblogs.com/zhongxinWang/p/4244815.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!