读写的指针作为全局变量吧
需要修改指针值的时候用InterlockedExchange函数,控制指针值的时候小心一点就不会有共享冲突的

解决方案 »

  1.   

    你的缓冲区可以动态得分呀,这样就不会出现缓冲区溢出了,比如用CArray<CType*, CType*>,你用一个线程去往数组里添加,另外一个读并负责释放内存就行了;CArray<yourType *,yourType*>buffData;Thread1
    yourType *p=New yourType();
    buffData.Add(p)thread2
    yourType *p=bufferData.GetAt(i);
    delete bufferDataAt(i);
    bufferData.RemoveAt(i)
      

  2.   

    CArray有时会引起大量的数据移动操作,不太好吧?
      

  3.   

    InterlockedExchange会占用很多时间吗?
      

  4.   

    关键要看当数据溢出时你的处理方案。
    如果是忽略新数据或覆盖最老数据的话,用circle buffer。
    如果是关键数据,必须处理的话,只好采取动态分配空间的办法了。
      

  5.   

    是呀,你可以用CircleBuffer,然后使两个线程互斥,这要就不会有两个线程同时修改指针的问题了(不知道你的要求是怎样的,如果是要求写一个数据,然后读一个数据,就是要使两个线程同步,如果你学过操作系统,你应该知道这是一个很经典的问题,有很好的方法解决的)
      

  6.   

    to amoroso
    没事的,InterlockedExchange已经包含了同步机制了,同时读写的话,读到的要么是写前的,要么是写后的,不会是脏的,很快的。