TerminateThread(((CMyApp*)pThread)->m_hThread,0);
会自动释放其所站用的内存。
会自动释放其所站用的内存。
解决方案 »
- debug版 编译OCX注册时出错
- 请问高手,如何去掉自定义控件难看的3D边框,还有浏览器控件的3D边框。 (这问题始终没有能解决)
- 如何将 BSTR 转化为LPCSTR 类型 。。 急等。。 谢谢
- 求串口传送文件的源程序!(不分段发送,,所有50分奉上..谢谢!
- 想学DirectX与多媒体开发,哪位帮忙推荐一本好书哦!!!
- 一个打印分页的问题~~
- vc中的string table是干什么用的
- 一个简单的类之间函数调用的问题???
- 关于CTreeCtrl的SortChildrenCB函数调用的问题
- 有关VC数据库操作的几个问题:
- 请问在学C++时如何做好学习笔记?
- 为什么我的循环完不成?急切想得到大家帮助!!
TerminateThread(((CMyApp*)pThread)->m_hThread,0);
//只是发了一个让线程终止的消息
//线程收到消息后才删除自身,释放资源
//因为线程内部可能分配了其他资源
delete (CMyApp*)pThread;
//这儿只是表面上把线程删除了
//线程占有的资源可能并没有释放
mailinfo.pThread = NULL;
那如果是这样,delete (CMyApp*)pThread; 之后,
线程执行结束也会自动释放资源啊
很危险的东西,编程最好不用,最好让线程自动返回,TerminateThread(((CMyApp*)pThread)->m_hThread,0);在线程返回后还调用他有什么用?
是这样,我需要的是如果线程在一定时间没有返回,则需要强行关闭。
ExitThread()需要在线程里面调用。线程如果被阻塞没有返回就没办法了
如果是工作者线程则退出线程函数后,线程也会自动退出,并释放资源;
如果是用户界面线程,则大概是执行完CWinThread::Run()后线程自动退出。
有什么办法让他终止?除了用TerminateThread
再一种情况就是,在线程中将很耗时的操作分成小时间片来运行,以保证在用户可以忍受的时间限度内,你的线程可以正常终止。比如原来你的线程是进行一个长时间的数据运算,那么你最好在每次循环等地方(甚至更精细的地方)都加上是否退出的判断,以此避免Terminate的调用。
总之,线程同步问题总是有办法解决的,对Terminate的调用,只要程序逻辑设计好,应该可以避免。
是这样,我的线程是用socket阻塞通讯的,一段时间内没收到消息也没有出错的话,
仍处于阻塞状态,怎么来让线程自己结束呢?
好点的方法: 线程里select,而不是仅仅recv
最好的方法: 我不知道
是很不好的方法 你可以试试给你的线程发message让系统去干剩下的事情。
microsoft 的文档不主张用 TerminateThread;
TerminateThread is used to cause a thread to exit. When this occurs, the target thread has no chance to execute any user-mode code and its initial stack is not deallocated. DLLs attached to the thread are not notified that the thread is terminating.
我有个办法不知道能不能行得通:
1. 给线程发消息让它终止
2. delete 你的句柄