环spawn起线程句柄数疯长
平台:win xpACE:5.4
主进程中起ACE_Task,然后在主进程中调用ACE_Thread_Manager 的wait方法。
在Task线程中用ACE_Thread_Manager 的spawn方法在一个循环体中起子线程。
结果用windows任务管理器看进程的句柄数狂长!
是不是因为spawn出来的线程资源没有释放,spawn出来的线程应该如何退出比较好呢?
请教大家 理解有误,task本身就携带了异步执行的方法,直接可以在task的open虚函数中使用activate方法。
直接在循环中spawn线程,当然有问题了。
线程退出更简单,处理完毕后,直接返回 return x ,x是返回值。 我的意思不是这样的我是在task类里面运行一段代码,然后需要在这个线程中另起一个线程干别的事情。
今天已经发现问题所在了,是spawn()方法的flag参数的问题。我使用了THR_JOINABLE,但是没有调用
ACE_Task::wait()或者ACE_Thread_Manager::wait_task()方法来接收线程的退出。
所以没有释放spawn出来的线程的资源。
后来我改用THR_DETACHED就好了。
页:
[1]