怎么从调用线程的函数里终止线程??
主线程创建了几个线程CreatThread()
怎么从调用线程的函数里终止线程??也就是不是从线程函数里终止
只能用TerminateThread吗?这个不是说很不安全
可如果我用ExitThread()只能让线程自己结束自己,而不能让调用它的线程来结束它
[解决办法]
只要你能保证你要结束的线珵在执行的任何一点对程序的影响可以无视,你可以用TerminateThread,
否则用全局变量做个开关,在线程循环条件中按条件跳出。
[解决办法]
TerminateThread不安全也要用的啊。只要你的线程里没有什么代锁的资源就好点。
[解决办法]
我做项目惯用的思路:
主线程创建子线程后,主线程会做一些监视子线程的活动,如果主线程想结束子线程,你给一个全局变量gA赋值,然后在主线程中调用WaitForMultipleObjects( MAX_THREAD_NUM, hThreads, TRUE, INFINITE )等待线程退出,其中hThreads为子线程句柄数组;
子线程执行的时候,会时刻监视gA的值,如果发现要退出,完成一系列的善后处理,退出本线程,由于主线程中的WaitForMultipleObjects的第三个参数是TRUE,需要等到全部子线程句柄都处于有信号状态(子线程退出),该函数才继续执行后面的语句,完成从主线程退出子线程的功能。
不建议直接使用TerminateThread之类的,太霸道了。
[解决办法]
首先应该将多线程这种设计当做任务协作来看待,尽管各个任务是有主次之分的,但线程之间不是主从关系,当然它们存在的权利是一样的,所以尽量不用TerminateThread这样的暴力方法。很容易有后遗症的。
所以在设计的时候就要灌输协作观念进去。