CArray<STRU, STRU&> arryGlobalStruct;上面是我定义的全局变量,类型是数组,可是线程中只要对数组进行 Add 或者 SetAt 操作整个程度都会挂掉, GetAt 就没问题这种情况该怎么处理?大家线程之间的共享数据都怎么解决?

解决方案 »

  1.   

    CArray<STRU, STRU&> arryGlobalStruct;
    CCriticalSection csGlobalArray;然后在每一个线程需要修改的时候这样:
    cs.Lock();
    arryGlobalStruat.SetAt(....);
    cs.Unlock();
      

  2.   

    别忘了:
    include <afxmt.h>
      

  3.   

    csGlobalArray.Lock();
    arryGlobalStruct.SetAt(iIndex, StructElement);
    csGlobalArray.Unlock();奇怪,为什么我还是会提示错误?
      

  4.   

    还是不行... 错误都是 Runtime error, 具体没说主线程和一个副线程都没问题,可再开副线程就有问题了CArray 还不能用 volatile... 55555头疼了
      

  5.   

    唉,up。
    俺就用critical section访问过全局的CList,好像没什么问题嘛。
      

  6.   

    写一个类,把它做为成员数据,手动实现一下它的互斥。再把它设为全局变量或指针。每到一处,extennd它就是了。
      

  7.   

    可能这个自定义的STRU的数据访问有问题