我用CreateThread创建子线程,
线程启动方式suspend方式后再resume当系统的内存耗尽时,
会出现无法Terminate该子线程的情况而且,我发现此时父线程Sleep了好几秒,都无法重新进入到该子线程这是什么缘故?

解决方案 »

  1.   

    我的父线程会不断的create以及terminate子线程可能用线程池能解决我的问题希望有经验的人能指点一二分不够可再加
      

  2.   

    耗尽内存是不容改变的事实
    因为我是用来显示很多幅图像(这儿的架构不允许我去改变了)
    当然,在程序中会判断内存情况,有个阈值,让它耗到一定比率就会开始释放一部分
    这个阈值不允许我去设置现在的方法是重复创建线程(目前是2千左右就会出问题)to zhoujianhe:我的程序会有什么问题?能不能说点你的经验或者猜想?比如子线程,父线程中都有sleep导致的?
      

  3.   

    现在的问题是
    内存耗完了,子线程也创建成功了
    但即使父线程sleep了
    子线程也一直分配不到时间片
      

  4.   


    不会吧.不断Create再Terminate???
    Terminate本来就不是推荐的做法.会造成线程占用的资源不能释放.当然会有资源泄漏.
    方法有问题.根据你的需要改为其他实现.比如楼上说的:线程池.
      

  5.   

    资源耗尽是我夸张的说法我的程序中会根据有可用物理内存判断的,用到一定程度时会调用释放内存的代码所以我的代码只会耗掉比较多的资源,我现在的问题是,为什么在这种情况下,子线程都被创建成功了,却无法获得父线程sleep时的系统时间片
      

  6.   


    方法的确是有问题的,我改为线程池后就ok
    不过很想了解CreateThread,Terminate这种方法的缺陷是阻塞么?
      

  7.   

    你去看看windows核心编程 你用的CreateThread,Terminate 这两个函数都是建议不要使用的 
    上面写的很详细!
      

  8.   

    TerminateThread返回失败是吗?错误码是什么?
      

  9.   

    TerminateThread返回成功的总之,现在的问题是创建成功的子线程获取不到CPU时间片
    哪怕系统CPU占用率在1%.我现在用了线程池就没这个问题了我先去看看windows核心编程怎么说的