我CWinThread派生了一个类,然后用AfxBeginThread启动了新线程,但当主线程检测到特定标识时需强行终止已启动的子线程,该如何实现?直接pThread->ExitInstance()?会不会有危险造成内存泄漏?我发现如果主线程不等待子线程即退出,则有内存泄漏,但是我并没有在线程类中主动new任何空间。
如果是用AfxBeginThread(工作线程函数,...)的方式启动的线程呢?又该如何强行终止(MSDN说需在线程内部endthread或者return,但是我要从外部终止怎么办)?让线程循环检测某标识,若该标识被置位则退出?有没有更好的办法?
如果是用AfxBeginThread(工作线程函数,...)的方式启动的线程呢?又该如何强行终止(MSDN说需在线程内部endthread或者return,但是我要从外部终止怎么办)?让线程循环检测某标识,若该标识被置位则退出?有没有更好的办法?
外部中止线程,可以使用事件来实现。调用WaitObject之类的函数。
如果要外部“强行”中止,可能只有TerminateThread。在”强行“中止的情况下,好像没有办法
防止内存泄漏。
所以,最好不要强行中止线程。而是通知线程,使其自行结束。
void ExitThread(DWORD );
如果在线程外面中止:
BOOL TerminateThread(HANDLE ,DWORD );//不过该函数会引起系统不稳定,线程占用的资源不会释放(内存泄漏)。