找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 3870|回复: 2

环spawn起线程句柄数疯长

[复制链接]
发表于 2008-1-17 18:43:19 | 显示全部楼层 |阅读模式
平台:win xp
ACE:5.4
主进程中起ACE_Task,然后在主进程中调用ACE_Thread_Manager 的wait方法。
在Task线程中用ACE_Thread_Manager 的spawn方法在一个循环体中起子线程。
结果用windows任务管理器看进程的句柄数狂长!
是不是因为spawn出来的线程资源没有释放,spawn出来的线程应该如何退出比较好呢?
请教大家
 楼主| 发表于 2008-1-17 18:43:24 | 显示全部楼层
理解有误,task本身就携带了异步执行的方法,直接可以在task的open虚函数中使用activate方法。
直接在循环中spawn线程,当然有问题了。
线程退出更简单,处理完毕后,直接返回 return x ,x是返回值。
 楼主| 发表于 2008-1-17 18:43:35 | 显示全部楼层
我的意思不是这样的我是在task类里面运行一段代码,然后需要在这个线程中另起一个线程干别的事情。

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

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

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

后来我改用THR_DETACHED就好了。
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-12-23 09:06 , Processed in 0.025913 second(s), 7 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表