服务端的处理流程大概是:初始化临界区等资源, 开三个处理请求队列线程, 然后主线程:接受CLIENT的请求->进入临界区(CriticalSection)->加入请求队列尾部中,队列尾指针指向新节点->退出临界区(CriticalSection);处理队列线程流程是:进入临界区->取队列首元素置于临时指针,并将队列首制向下一个元素->退出临界区->返回临时指针然后对请求处理->处理结束释放free该请求堆空间.问题:我在WIN2K PRO +VC6下编译测试环境下没问题 和WINXP PRO +VC7编译测试没问题,但是把这两个环境下编译好的程序放在win2003 SERVER企业版执行时不长时间就异常退出,请问可能是什么原因?
一定要在WIN2003下编译才行么?

解决方案 »

  1.   

    你有没有判断请求队列为  空  的情况,那样取出来是NULL, 直接处理当然是异常还有移动指针的时候,是否有判断当前队列已经空了。等
      

  2.   

    处理队列的时候 已经对队列进行了详细的判断,另外DentistryDoctor兄所说的同步问题是什么意思呢?
      

  3.   

    SORRY,忘记说了:
    加请求到队列中 和 从队列中取队列头节点 都用的一个临界区,并且这两个操作结束后均释放该临界区。程序初始化用InitializeCriticalSection,进入临界用EnterCriticalSection,退出临界区用LeaveCriticalSection函数调用.
      

  4.   

    VC的项目属性运行时库改成 多线程(MT) 后目前运行没出现异常退出,感谢各位了