一个多线程的问题........! (50分)

  • 主题发起人 主题发起人 wnazn
  • 开始时间 开始时间
W

wnazn

Unregistered / Unconfirmed
GUEST, unregistred user!
我调用线程后,在线程运行过程中想将其结束并立即释放资源,好像用free,destroy,
terminate等方法都不能立即结束,用suspend方法可以立即停止但无法在调用free释放,
请教高手。[?][?]
 
你的问题描述再清楚一点....不过估计你在vc写的dll中没有释放资源
 
使用Stcall,因为VC有其标准。
 
to wnazn
有没有找到解决的办法
 
经过一番努力我现在终于找到一些门道了
 
to wnazn
能把你的这一段代码发给我吗,或者发到我邮箱:jayxsjf@163.com谢谢,我已经搞这个问题
搞了快一个星期了。
 
对于循环处理的线程应该在循环体中加入
if terminated then
break;
这样的判断,需要结束时调用mythread.terminate就可以了
这样可以保证线程正常退出,系统自动释放资源
对于没有循环的线程调用terminatethread(mythread.handle,0);
可以实现程立即结束,但有部分线程所占用资源不能立即释放,
application.terminate结束时可能会得到彻底释放
如果你对程序要求比较严格的话可以自己写个释放资源的程序
可过高手的提示感觉太难,而且对程序影响不是很大
 
cpu把时间片按一定的优先策略分给各个线程,“立即”结束必须是实时操作系统
 
各位高手:
我怎样判断我的线程当前是否已经结束了
最好能给点详细的代码
 
在结束线程的代码中;
thread1.terminate;
在线程的execute中: if (!terminated)
{
//未结束线程,继续完成线程
}
else
{
//线程已经终止
ExitThread(false);
//WINAPI: 退出线程
}
BCB风格写法
 
后退
顶部