1 set flag 2 modify flag and WaitForSingleObject etc.
设置标记,通过线程while(flag)就可以,实现上就是让线程函数结束就可以了
从《核心编程》里抄了几句,你还是自己再看看吧: 第6章 线程的基础知识 6.5 终止线程的运行 127 6.5.1 线程函数返回 127 6.5.2 ExitThread函数 127 6.5.3 TerminateThread函数 127 6.5.4 在进程终止运行时撤消线程 128 6.5.5 线程终止运行时发生的操作 128与E x i t T h r e a d 不同,E x i t T h r e a d 总是撤消调用的线程,而Te r m i n a t e T h r e a d 能够撤消任何线程。 h T h r e a d 参数用于标识被终止运行的线程的句柄。当线程终止运行时,它的退出代码成为你作为d w E x i t C o d e 参数传递的值。同时,线程的内核对象的使用计数也被递减。 注意Te r m i n a t e T h r e a d 函数是异步运行的函数,也就是说,它告诉系统你想要线程终止运行,但是,当函数返回时,不能保证线程被撤消。如果需要确切地知道该线程已 经终止运行,必须调用Wa i t F o r S i n g l e O b j e c t (第9 章介绍)或者类似的函数,传递线程的句柄。 设计良好的应用程序从来不使用这个函数,因为被终止运行的线程收不到它被撤消的通知。线程不能正确地清除,并且不能防止自己被撤消。
要关闭线程,最好的方法是,通过各种方式通知线程自己去结束。
实在不行才会使用TerminateThread()来结束线程。
想要退出线程时,把bool变量置未true,
在线程的循环里面判断这个变量,满足条件,退出循环
2 modify flag and WaitForSingleObject etc.
第6章 线程的基础知识
6.5 终止线程的运行 127
6.5.1 线程函数返回 127
6.5.2 ExitThread函数 127
6.5.3 TerminateThread函数 127
6.5.4 在进程终止运行时撤消线程 128
6.5.5 线程终止运行时发生的操作 128与E x i t T h r e a d 不同,E x i t T h r e a d 总是撤消调用的线程,而Te r m i n a t e T h r e a d 能够撤消任何线程。
h T h r e a d 参数用于标识被终止运行的线程的句柄。当线程终止运行时,它的退出代码成为你作为d w E x i t C o d e 参数传递的值。同时,线程的内核对象的使用计数也被递减。
注意Te r m i n a t e T h r e a d 函数是异步运行的函数,也就是说,它告诉系统你想要线程终止运行,但是,当函数返回时,不能保证线程被撤消。如果需要确切地知道该线程已
经终止运行,必须调用Wa i t F o r S i n g l e O b j e c t (第9 章介绍)或者类似的函数,传递线程的句柄。 设计良好的应用程序从来不使用这个函数,因为被终止运行的线程收不到它被撤消的通知。线程不能正确地清除,并且不能防止自己被撤消。