线程操作,
定义了一个全局变量A,主线程中要读写这个值,子线程中也读写这个值
那么在子线程中可以采用临界区对变量进行保护
EnterCriticalSection
......
LeaveCriticalSection问:在主线程中还要保护吗?怎么保护啊,我象子线程那样保护变量,最后就是死机了,晕。

解决方案 »

  1.   

    EnterCriticalSection
    LeaveCriticalSection
    要配对使用,另外要保证EnterCriticalSection 一定会执行 LeaveCriticalSectionVCL里常用的写法
    EnterCriticalSection
    try
      // 你的代码
    finally
      LeaveCriticalSection  
    end;
      

  2.   

    楼主你的代码我看是由于主线程和子线程共用一个加锁的,而且锁放在子线程内,这样写代码极易造成死锁,而且Windows有个毛病,就是只要一个内核对象挂住了,整个系统就会想死机一样,无法操作。
      

  3.   

    1.要保证EnterCriticalSection 后执行了 LeaveCriticalSection,否则死锁2.可以用mutex,这样可以使用waitForSingleObject设置等待时间,并且如果线程意外死亡后mutex会变成abandoned状态,不会造成死锁3.可以考虑原子锁,你搜索一下Interlock