ACE::fini()
这个函数会自动关闭线程吗?我用ACE_Thread_Manager开了一个线程,在程序退出的时候没有关闭它而直接调用ACE::fini()之后线程关闭了,也没有弹出内存泄露等错误信息,请问这样用真的没有问题吗?谢谢~ 有问题,不能这样使用。线程一定要进行同步后,进行退出。不能用这个ACE::fini()代替。 做了一个例子帮忙看看,跟踪进去的时候怎么线程关不掉呢?这是创建的pthread = ACE_Thread_Manager::instance();
if(pthread->spawn(test,this,THR_JOINABLE | THR_SCOPE_PROCESS|THR_CANCEL_ENABLE ) == -1)
return -1;这是线程函数DWORD test(void *arg)
{
while(true)
{
::Sleep(2000);
}
}这是关闭的if(pthread != NULL ){
if(!pthread->testcancel(pthread->thr_self()))
pthread->cancel(pthread->thr_self());
int n = pthread->testcancel(pthread->thr_self());
}老大们帮帮忙啊,小弟实在太菜,不知道哪有问题,这边两次testcancel都是返回0,cancel返回-1 回复 3# zhuzhenlei
主线程里面使用cancel是没有效果的,这个作用是主线程中取消非主线程的。 那我在哪里取消呢?我就是想在程序关闭的时候把这个创建的线程也关掉,谢谢~ 主线程要发信号、设置条件给辅助线程,然后等辅助线程退出,这样同步后,再最终程序退出。 多些两位帮忙啦,原来书上的例子写的很清楚,是我没开窍,多谢了{:3_53:}
页:
[1]