我有四个线程,主线程(从ArrayList中读对象的值)、插入新对象入队列进程、更新队列中对象值进程、删除队列中对象进程。我怎样使他们能同步执行。

解决方案 »

  1.   


    笔误,改为:
    我有四个线程,主线程(从ArrayList中读对象的值)、插入新对象入队列进程、更新队列中对象值线程、删除队列中对象线程。我怎样使他们能同步执行。
      

  2.   

    我的意思是读队列时,不要改变队列。它们之间是操作互斥的,使用lock(list),可以解决问题吗?
      

  3.   

    这样对吗?
    private ArrayList list = new ArrayList();// 读取对象函数
    Read()
    {
       lock(list)
      {
          for(int i = 0; i < list.count; i++)
          {
              // 读对象,代码省略
              
          }
      }
    }/// 更新对象线程启动函数
    Update()
    {
       lock(list)
      {
          for(int i = 0; i < list.count; i++)
          {
              // 读对象,本改变符合要求的对象的值代码省略
              
          }
      }
    }/// 删除对象线程启动函数Delete()
    {
       lock(list)
      {
          for(int i = 0; i < list.count; i++)
          {
              // 读对象,本改变符合要求的对象的值代码省略
              
          }
      }
    }/// 插入对象线程启动函数
    Insert()
    {
        lock(list)
        {
           A a = new A();
           list.Add(a);
        }
    }它们执行时间是随机的。