具体问题如下:
我现在有2个线程 Udprecv 和 Dataprc
Udprecv 主要就是接收数据,存放到缓冲区,一路一个缓冲区,用select对I/O进行控制的(不知道这种作法是否正确??)只要有一个连接就创建一个Dataprc线程,分别对对应的缓冲区进行处理。
我不知道如何对缓冲区进行控制,请高手多多指教~~
   blow~

解决方案 »

  1.   

    Reader/Writer的同步问题操作系统里面有Windows下用Mutex就可以了
    CreateMutex ReleaseMutex WaitForSingleObject
      

  2.   

    看来是我对问题描述得不够清楚的。
    首先
    在Udpproc里面,可以对buffer1~buffer4进行写;
    然而对Dataproc来说,它的一个线程只能对其中一个buffer进行处理,但Dataproc只有一个函数体,如果是临界区的话,不只是对其中的一个buffer进行同步的吗?
    我的意思相当于,如果在Dataproc中用指针传递buffer,那么如果我在Udpproc中进行buffer写的时候,相应的Dataproc的buffer数据是否也会同时改变?
      

  3.   

    那你可以这样:每一个buffer在用个代理类包装一下,增加一个Mutex(或者用MFC的CMutex更方便),
    每次对任何一个buffer的访问,都通过代理类来访问,
    代理类中可以这样实现:
    if(WaitForSingleObject(m_hMutex,INFINITE)==WAIT_OBJECT_0)
    {
     //.... access data
     ReleaseMutex(m_hMutex);
    }
    MFC的就这样: 
    m_Mutex.Lock();
    // access data
    m_Mutex.Unlock();在代理类构造函数中调用CreateMutex来创建m_hMutex
    这样你的dataproc的声明可以大概改为
    dataproc(DataProxy * pProxy)
    {
     pProxy->ReadData();
    }udpproc()
    {
     DataProxy proxy[4];
     proxy1[1]->WriteData();
    }