每个线程分别更改同一数组的不同数组元素,需要锁定么?

解决方案 »

  1.   

    如果是元素已经取出来了,那肯定是不需要锁定,但是你在数组上的操作,比如取元素和覆盖元素最好加上锁,如果要确切的信息,去SDK文档中察看System.Array中你使用的method是否明确说明是线程安全的,如果不是的话,那么你需要自己加锁保证线程安全。
      

  2.   

    of course , 如果你不能確定更新時間和更新順序的話,一定要加鎖,否則你不能保証你取出的數據是最新的。可以用mutex , lock 等等來加鎖.
      

  3.   

    可是每个线程都访问不同的数组元素啊?
    比如 
            线程1 更改 A[1]
            线程2 更改 A[2]
            线程3 更改 A[3]A[1] A[2] A[3] 都是作为参数传给线程函数的。这种情况下需要加锁么?
      

  4.   

    取A[1] A[2] A[3]和存A[1] A[2] A[3]的过程加锁,对这三个元素进行操作的过程不要加锁。
      

  5.   

    更改A[1] A[2] A[3]的值需要加锁么?
      

  6.   

    更改A[1] A[2] A[3]的值需要加锁么?
      

  7.   

    唉,如果你在你的线程内是
    {
        A[1].xxxx=xxxx;
    }
    这就需要加锁
    如果你的代码是
    ref1 = A[1];
    ref1.xxxx = xxxx;
    那么第一句要加锁,第二句不用