我不用做这个,直接TerminateThread也好像可以直接关闭(没有什么变化)啊!
另外 EnterCriticalSection 到底有什么作用?
如果我保证我的函数只被调用一次,或者即使被多次调用,也是在一个线程里被调用。甚至或者我将我的函数写成inline的形式 是否就可以不用EnterCriticalSection 了。也就不用管同步的问题了?

解决方案 »

  1.   

    用TerminateThread强行中止线程会有内存泄漏
      

  2.   

    如果我保证我的函数只被调用一次,或者即使被多次调用,也是在一个线程里被调用
    -应该可以不用
    如果写成inline还是会涉及到同时访问数据的问题
      

  3.   

    EnterCriticalSection 只是保证一段代码只在同一个时候调用一次吧?!还会涉及同时访问数据的问题?如果是这样,我对数据区做标记岂不更好?
      

  4.   

    HANDLE CKhevent = ::OpenSemaphore(SEMAPHORE_ALL_ACCESS, false, "CKSETTIMER");
    DWORD result=::WaitForSingleObject(CKhevent, 15000);//等待十五秒
      

  5.   

    在线程里WaitForSingleObject,然后由线程自动退出,线程的堆栈会被妥善处理,
    而TerminateThread()虽然可以有效结束线程,但内存会泄漏,
    建议两种方法应配合使用