如果可能同时修改一个全局变量的话,该怎么来限制每次只有一个进行修改?我看有个CSemaphore可以做到,但是没有看懂,不知那位能提供一个小例子?

解决方案 »

  1.   

    这是互斥访问 你应该用CMutexLock很简单
      

  2.   

    使用事件、临界段、互斥量、或信号量都可以,《Visual C++6.0技术内幕》
    P254(第12章)有简单的例子,一般讲VC的书都应该有。例如:
    int  aaaa=0;
    CCriticalSection m_cs;//临界段


    m_cs.Lock();
    aaaa=XXXX;
    m_cs.Unlock();
    可以保证访问不冲突。
      

  3.   

    楼主说的是信号量,chenjiming(还不够聪明) 说的是互斥量,两个都可以。还有其它的办法,建议楼主找本多线程设计的书看
      

  4.   

    互斥访问,这是个很普遍的常规问题,
    任何一本数据库,操作系统原理,Unix操作系统编程的书都讲得很详细。
      

  5.   

    如果你的全局变是个int而不是一个对象的话,用InterlockedIncrement()和InterlockedDecrement()就简单多了。互斥量与信号量等只用于对对象的同步操作,杀牛焉用屠龙刀。