http://blog.csdn.net/aka_xingwenpeng/article/details/11671725

解决方案 »

  1.   

    还是用mutex,可以跨进程,然后就是读写锁的逻辑了
      

  2.   

    把读写锁的状态信息放到共享内存,然后用一个mutex互斥对这个状态信息区的读写。当拿到对读写锁本身的访问权限后,读出读写锁状态。根据读写锁状态判断当前对于数据的访问是否允许,如果允许修改读写锁状态,放开mutex,然后该对数据区干嘛干嘛。如果当前状态不允许则麻烦些,放开mutex后等待在事件上,等通知吧,拿到通知后记得还是要重复上述操作直到成功。
      

  3.   

    第一步:定义函数:
    BOOL CShareMem::Lock(DWORD dwMilliSec)
    {
    if( WaitForSingleObject(m_hMutex,dwMilliSec) == WAIT_OBJECT_0)
    return TRUE;
    return FALSE;
    }
    BOOL CShareMem::Unlock(DWORD dwMilliSec)
    {
    return ReleaseMutex(m_hMutex);
    }第二步:
    //创建互斥量
    m_hMutex = CreateMutex(NULL,FALSE,csMutexName);
    //创建共享内存第三步:使用
     
        if( MySharedMem.Lock(100) )//加锁
        {
           //读写数据代码
           MySharedMem.Unlock();//解锁
        }
      

  4.   

    其实用命名的event 或mutex都可以做到,根据名字用openevent或openmutex在其它进程可以打开,不过有时候受到进程优先级影响,可以提高进程权限以可以读取其它进程中的event或mutex.