CSemaphore semaphore(1,1);semaphore.Lock();

class.fun();//执行函数semaphore.Unlock();
上面代码还是有问题 加锁后同样发生冲突CSemaphore semaphore(1,1);semaphore.Lock();
class.fun();//执行函数Sleep(100);
semaphore.Unlock();
加了Sleep(100);后 基本上不会冲突了 但是运行几万次以后还是会冲突如何保证运行百分百不会冲突呢第三方的类库无法修改的

解决方案 »

  1.   

    应该是信号量锁加的不对吧  
    换成临界区(CCriticalSection)或者 事件试试
    线程同步也就这几种方法 正确使用 应该能解决
      

  2.   

    CSemaphore semaphore(1,1);semaphore.Lock();
                                            
    class.fun();//执行函数semaphore.Unlock();
    你这段代码是几个线程中都有吗?这种情况肯定不行.
    你应该把这段代码包装成一个函数,并且CSemaphore semaphore(1,1);这个要定义成全局的(或类似情况)
      

  3.   

    CSemaphore semaphore(1,1);semaphore.Lock();
        
    class.fun();//执行函数semaphore.Unlock();
    这段代码要是多个线程中都有,也可以,主要CSemaphore semaphore(1,1);这个要定义成全局的
      

  4.   

    CSemaphore semaphore(1,1);这个是全局的阿 应该是信号量锁加的不对吧   
    换成临界区(CCriticalSection)或者 事件试试这两个不一样么 好像没区别吧?
      

  5.   

    你的CSemaphore semaphore(1,1);在 哪里定义的??