我有两个对一个CArray进行操作的函数。一个函数是删除一条数据,一个函数是顺序依次操作所有数据
由于两个函数随时可能被调用,这样就存在正在顺序操作数据的时候不能删除的问题,应该如何解决?两个函数如何实现互斥执行

解决方案 »

  1.   

    用同步类,如CCriticalSection, CMutex等。
      

  2.   

    CEvent waitACK;
    waitACK.ResetEvent();
    if (WAIT_TIMEOUT == WaitForSingleObject(waitACK, nTimeOut*1000))
    {
        ..............
    }waitACK.SetEvent();
      

  3.   

    临界区等
    CCriticalSection cs;
    每个函数进去的时候cs.lock();,退出的时候cs.unlock();
      

  4.   

    1.如果两个函数在一个线程里的话,则不需要任何附加工作,会自动按顺序调用这两个函数,不需要任何同步操作。
    2.如果是多线程的话,则需要同步处理,针对资源使用CCriticalSection cs
      

  5.   

    如果函数出口多,记得不要忘记unlock~
      

  6.   

    严重同意LS的话
    虽然临界区比较简单,不过似乎MS更建议使用内核对象