peakzhang 发表于 2008-1-17 18:43:19

环spawn起线程句柄数疯长

平台:win xp
ACE:5.4
主进程中起ACE_Task,然后在主进程中调用ACE_Thread_Manager 的wait方法。
在Task线程中用ACE_Thread_Manager 的spawn方法在一个循环体中起子线程。
结果用windows任务管理器看进程的句柄数狂长!
是不是因为spawn出来的线程资源没有释放,spawn出来的线程应该如何退出比较好呢?
请教大家

peakzhang 发表于 2008-1-17 18:43:24

理解有误,task本身就携带了异步执行的方法,直接可以在task的open虚函数中使用activate方法。
直接在循环中spawn线程,当然有问题了。
线程退出更简单,处理完毕后,直接返回 return x ,x是返回值。

peakzhang 发表于 2008-1-17 18:43:35

我的意思不是这样的我是在task类里面运行一段代码,然后需要在这个线程中另起一个线程干别的事情。

今天已经发现问题所在了,是spawn()方法的flag参数的问题。我使用了THR_JOINABLE,但是没有调用

ACE_Task::wait()或者ACE_Thread_Manager::wait_task()方法来接收线程的退出。

所以没有释放spawn出来的线程的资源。

后来我改用THR_DETACHED就好了。
页: [1]
查看完整版本: 环spawn起线程句柄数疯长