找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 4126|回复: 1

关于ACE::fini()

[复制链接]
发表于 2007-12-11 22:48:30 | 显示全部楼层 |阅读模式
我用MFC和ACE5.5写了一个文件传输程序时遇到这样一个问题:如果在文件发送线程结束前强行退出程序,程序会死掉无法响应,代码大概是这样的
  1. class SendFileThread : public ACE_Task_Base
  2. {
  3. int svc()
  4. {
  5. ...
  6. while(1) {//检查是否被要求退出
  7.   thr_mgr()->testcancel(thr_mgr()->thr_self()) {
  8.    ...
  9.    return 0;
  10.   }
  11.   ...
  12. }
  13. return 0;//发送完成返回
  14. }
  15. void Stop()
  16. {
  17. ...
  18. ACE_Thread_Manager::instance()->cancel_task(...);
  19. ACE::fini();
  20. ...
  21. };
复制代码
但是,将ACE::fini();去掉后却能够“正常”结束程序(我的意思是点了退出按钮后程序很快就退出,但是可能已经出现了资源泄露)。哪位达人能解释下ACE::fini()做哪些事情啊?
顺便给俺介绍个看源码的工具吧,知道有个sourceInsight,但是没用过
 楼主| 发表于 2007-12-11 22:49:03 | 显示全部楼层
结束时候的线程同步错误,ACE::fini()要在程序结束的时候调用,不能这个时候调用
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

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

GMT+8, 2024-5-18 11:22 , Processed in 0.015137 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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