最近开发一个多线程的东西,在维护全局变量的时候,感觉总是不怎么顺当,多个线程在同时操作全局变量的时候,如何既方便又最大限度的不影响性能的维护这个变量.

解决方案 »

  1.   

    也知道加锁,.net 有很多类似加锁的东西,所以比较晕乎
      

  2.   

    lock(xxx)
    {
        ....
    }xxx就是你要加锁的变量,必须是引用类型。
      

  3.   

    照此,我写了个测试代码
    public class ManagerSrvTable
    {
    private Hashtable items=new Hashtable(); public ManagerSrvTable()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    }
    public void Add(string key ,EntryManagerSrv server)
    {
    lock(this)
    {
    items.Add(key,server);
    }
    }
                       public void Remove(string key)
    {
    lock(this)
    {
    items.Remove(key);
    }
    }
    public Hashtable Items
    {
    get {return items;}
    }
    }public class mainclass
    {
    public static ManagerSrvTable mst=new ManagerSrvTable();
             //下面多个线程去操作这个mst,比如一个线程取mst.Items,一个线程执行mst.add(……),一个线程执行mst.Remove(……)
    …………………… }
    这样的代码有问题吗?
      

  4.   

    同意 qpl007(蓝色闪电) 的说法
      

  5.   

    lock(this) 很好, 我基本上都是这样做的。 
      

  6.   

    大大们,我的代码有没有问题啊,我总感觉那个访问items属性有问题哎,指点一二嘛
      

  7.   

    intersun(.NET VS Java) ,一个项目里没有全局性变量?不大可能吧
      

  8.   

    按照你的用法,lock(this)可以了。