本帖最后由 sujiewen 于 2011-05-25 15:42:41 编辑

解决方案 »

  1.   

    其他线程肯定不能执行的,你确定一个线程只调用了test一次?一个线程多次Lock是没有任何压力的
      

  2.   

    if(m_isHangUpCom) return;
    返回之前,Unlock()一下,防止死锁。
      

  3.   

    你的两个TRACE之间有个if(m_isHangUpCom) return;语句,不觉得有问题吗?return之前没有unlock
      

  4.   

    lock, 假如是同一个线程调用, 不论lock多少次都可以通过的. 
      

  5.   

    本来if(m_isHangUpCom) return;本来这句是没有的,我发现锁不住就加了这句.我这里就是锁不住,是多线程。
      

  6.   

    m_CSection如果不是static类型的,那不同的类实例是不会共享他的。
      

  7.   

    楼上一语惊醒梦中人,说不定LZ访问的就不是同一个CriticalSection
      

  8.   

    return之前unlock一下再来继续问。这样的问题不改掉至少是对不起自己的。