同步处理吧,锁粒度小点,
通知2后让他copy一份数据,仅同步copy过程

解决方案 »

  1.   

    可以使用同步,不过显然1中什么时候来数据是不受控制了,来了就必须去处理,不然数据丢失。
    考虑使用多个buffer[1024]缓冲链表方式,
      

  2.   

    是用环形队列的缓冲区就可以了int nHead = 0;      // 表示当前数据起始位置
    int nTail = 0;      // 表示当前数据结束位置
    BYTE buffer[1024];
    如果nHead == nTail表示缓冲区中没有数据,即(nTail - nHead + 1024) % 1024表示当前缓冲区的数据长度
    写的线程只允许修改nTail,而读的线程只允许修改nHead
    如果象你所说的是在文件中,可以用内存映射文件来实现