peakzhang 发表于 2007-12-11 22:48:30

关于ACE::fini()

我用MFC和ACE5.5写了一个文件传输程序时遇到这样一个问题:如果在文件发送线程结束前强行退出程序,程序会死掉无法响应,代码大概是这样的

class SendFileThread : public ACE_Task_Base
{
int svc()
{
...
while(1) {//检查是否被要求退出
thr_mgr()->testcancel(thr_mgr()->thr_self()) {
   ...
   return 0;
}
...
}
return 0;//发送完成返回
}
void Stop()
{
...
ACE_Thread_Manager::instance()->cancel_task(...);
ACE::fini();
...
};

但是,将ACE::fini();去掉后却能够“正常”结束程序(我的意思是点了退出按钮后程序很快就退出,但是可能已经出现了资源泄露)。哪位达人能解释下ACE::fini()做哪些事情啊?
顺便给俺介绍个看源码的工具吧,知道有个sourceInsight,但是没用过

peakzhang 发表于 2007-12-11 22:49:03

结束时候的线程同步错误,ACE::fini()要在程序结束的时候调用,不能这个时候调用
页: [1]
查看完整版本: 关于ACE::fini()