我现在有一个线程用到了一个全局变量,但是另外又有一个线程要用到它,而且要改变它,这两个线程又得同步,我该怎么办呢。我试过同步线程的一些办法,没有成功~~~

解决方案 »

  1.   

    不是吧,你一定没正确使用 CriticalSection,在访问你的变量前
    EnterCriticalSection(),访问结束后立即LeaveCriticalSection()就可以了。
      

  2.   

    可以使用临界区:
    CRITICAL_SECTION m_ObjectLock;
    //初始化临界区
    InitializeCriticalSection(&m_ObjectLock);// 进入临界区
    EnterCriticalSection(&m_ObjectLock);//处理全局变量//离开临界区
    LeaveCriticalSection(&m_ObjectLock); // 删除临界区
    DeleteCriticalSection(&m_ObjectLock);
    注意:必须在同一进程中使用。
      

  3.   

    谢谢各位!!这个问题我再好好考虑一下, 解决了另外开贴给分!!!还请上面得各位高手再帮我看看这个问题:http://expert.csdn.net/Expert/topic/2586/2586312.xml?temp=2.387637E-02
    拜托啦。
      

  4.   

    不大懂楼主的问题,首先这两个线程要访问这同一个变量,这似乎用一般的临街区或其他异步方式就能解决。不过不太明白楼主所说的两个线程同步是什么意思呢?是因为要访问这个变量而同步嘛?还是要因为其他要求而进行同步?如果是单CPU系统,无论怎么样,两个线程都是有个执行的先后的拉,总是可以用这些方式能做到所谓的同步的吧?多CPU系统则另当别论了。
      

  5.   

    谢谢各位朋友的帮助!
    这个问题放下好久没做了,现在想把它解决了。
    to  vcforever(霓裳羽衣) :
    我在线程函数里对该全局变量生成一副本(局部变量),两个线程刚开始不久可以“同时”运行,但运行时间一长,好像就有些冲突了,我再观察观察....