强行终止线程
使用的是boost线程库,主线程构造出一个任务队列,依次执行队列中的任务,创建线程用于处理单个任务;
在某些情况下创建的线程执行体会出现死锁的现象,比如对远程网络文件操作时遇到网络异常,处理函数长时间不返回,此时如何强行终止该线程,以便继续执行后面的任务?
static long thread_proc(void* data)
{
do_write_remote_file();
return 0;
}
thread_task()
{
thread = boost::thread(boost::bind(&thread_proc, param));
thread.join();
}
[解决办法]
发消息,让其退出线程
[解决办法]
BOOL TerminateThread(
HANDLE hThread,
DWORD dwExitCode
);
可强行结束线程。
[解决办法]
最好是让线程函数返回来退出线程
或者如3L所说 用TerminateThread或者ExitThread来退出。
[解决办法]
线程中建立消息队列和循环,主程序PostThreadMessage
[解决办法]
永远不要强制线程退出,另外,LS说的ExitThread那是线程内部使用的
[解决办法]
大家都知道让线程自然退出的好处,不好有时由于设计的不好,没有办法时还是要用TerminateThread
[解决办法]