我写程序中遇到下述问题:
有一个资源S,有A、B、C三类线程要使用它。每类线程都有多个线程。同一时刻只能有一类线程使用S,如A类使用,B、C类就不能使用。同类线程可同时使用S。需使用什么样的资源锁才能完成对S的访问控制?

解决方案 »

  1.   

    没有满足你需要的可以直接使用的锁。写个类吧,里面有个锁,并且记录着当前时刻资源归属哪个线程类或者空闲着,A,B,C要访问资源时,询问该类我是否能获取资源。如果资源空闲,则可以使用,如果不空闲,而拥有者是同一个线程类,则也可以使用,否则不行。
      

  2.   

    用CSingleLock或者CCriticalSection , 有Lock()和UnLock()方法。推荐使用CSingleLockCSingleLock singleLock(&m_CritSection);
    singleLock.Lock();
    // resource locked
    //.usage of shared resource...singleLock.Unlock();
      

  3.   

    用等待事件吧Event,WaitForSingleObject
      

  4.   

    这个不需要锁, 你用1个变量, 0 表示没人用 1表示 A可以用 2表示B 可以用 3表示C可以用, 接下来 你懂的