标签:
原文:http://www.cnblogs.com/wolf-sun/p/4209521.html
临界资源:一次仅允许一个进程使用的共享资源。
临界区:每个进程中访问临界资源的那段代码称为临界区,对于同一个临界资源,可以有多个临界区。
lock关键字可以确保当一个线程位于代码临界区时,另一个线程不会进入临界区。如果其他线程尝试进入锁定的代码,则它将一直等待(即锁定),知道该对象被释放。
lock关键字在块的开始处调用Enter,而在块的结尾处调用Exit。通常,应避免锁定public类型,否则实例将超出代码的控制范围。
Enter指的是Monitor.Enter(获取指定对象上的排他锁),Exit值的是Monitor.Exit(释放指定对象上的排他所),这里的指定对象指的是临界资源。
下面来说说,我在图片监听和上传中的代码,程序会将监听目录下面的新图片文件保存到一个字典中。
这里的_fileList就是我们的临界资源。向字典中添加内容,这个是操作系统的监听线程去完成的。
将图片上传到服务器,然后从字段中删除上传过的数据。这个操作是我们自己开启的一个上传线程。
由于SaveFile方法中操作字典的长度,那么问题来了:如果上传的时候,监听线程又向字典中写入数据,就会造成数据的混乱。
标签:
原文地址:http://www.cnblogs.com/zhongxinWang/p/4244815.html