首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

多线程同时下载5个文件时,下载的那段代码里使用了全局变量 的有关问题!

2011-12-23 
多线程同时下载5个文件时,下载的那段代码里使用了全局变量的问题!!我该怎么解决多线程使用全局变量的问题!

多线程同时下载5个文件时,下载的那段代码里使用了全局变量 的问题!!
我该怎么解决多线程使用全局变量的问题!!
比如代码这里有个i,那里有个K,又是那里有个Y
我每碰到个全局变量,我就象这样子
private   static   ManualResetEvent   allDone   =   new   ManualResetEvent(false);
allDone.Reset();
i++;
allDone.Set();
还有那个同步基元Mutex该怎么用?
lock该怎么用?是不是每次碰到全局就lock他?


[解决办法]
lock(i)
{
}
[解决办法]
取值可以不用Lock,赋值要Lock!
[解决办法]
先把i装箱,再lock
要用int的时候再拆箱,++

lock的原理大概是维护一个数组(栈、集合?),里头存的是引用的地址
线程A lock的时候,先看里头是否有这个地址,如果有,就等待,直到调用lock的线程B结束,再把自己lock后的引用地址加进去,以此达到线程锁定的目的。

热点排行