大家都知道 线程最好由他自己 return 0 这是最安全的方法 且线程自身占用的资源会自动释放最近项目当中出现一个问题 由多线程来控制一个窗口特效的问题就是,可能这个特效要反复调用,就是说这个特效创建过以后 ----
特效开始 --- 特效演示中(此时线程还未循环完)就在这个时候该特效要在来一次,我的处理方法是 -----特效开始 --- 特效演示中(此时线程还未循环完) --- TerminateThread强制关掉线程 -- 特效开始 -- 特效演示中 ---
总体看来效果是实现了,但似乎有内存泄漏,因为经测试发现,每次强制关掉在创建特效后程序占用的虚拟内存就上涨一次,我不停的创建(也就是不停的强制关线程在创建线程)线程,虚拟内存就在不停上涨,就算我停下来 虚拟内存还是上涨后的那么多 不会降下去 所以我就琢磨是这个强制关线程的问题,我用的是C++的方法创建的线程(CreateThread)你们说 这种情况下我该咋办请各位畅所欲言~~~谢谢

解决方案 »

  1.   

    在线程中暂停行不行呢?或者用一个全局变量对线程进行相关的控制,总之用TerminateThread是肯定有问题的。
      

  2.   

    不能暂停因为新创建的这个特效是线程里的另外一个 case 下的代码 也就是不同的特效每次创建一个新的特效时 现在正在运行的特效线程必须要关掉 然后才能来创建这个新的特效
    具体为什么要这样做 我就不能详细叙述了抱歉
      

  3.   

    你的意思是全局变量来控制各个线程是否return 0是吗?我大概的想了一下是可以做到的 不过确实如你所说 代码需要修改很多地方倘若实在没有办法也只能这样了,我在想想谢谢
      

  4.   

    其实如果资源控制的好直接TerminateThread也没什么
      

  5.   

    没办法的呀,我必须先终止一个HANDLE的线程,在启动另外一个HANDLE的线程
      

  6.   

    慢慢改你的代码,用全局变量控制,我自己代码里是这样.for()
    {
        //要循环很多次做的事情
        //...
        if(g_退出)
        {
            return 0;
        }
    }这样在线程外可控制该线程的终止了.