C语言如何终止线程?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言如何终止线程?相关的知识,希望对你有一定的参考价值。

C语言如何终止线程?如图 举个例子最好

参考技术A 调用ExitThread函数。
该函数将终止线程的运行,并导致操作系统清除该线程使用的所有操作系统资源。但是,C++资源(如C++类对象)将不被撤消。
(3) 调用TerminateThread函数。
TerminateThread 能撤消任何线程。线程的内核对象的使用计数也被递减。TerminateThread函数是异步运行的函数。如果要确切地知道该线程已经终止运行,必须调用WaitForSingleObject或者类似的函数。当使用返回或调用ExitThread的方法撤消线程时,该线程的内存堆栈也被撤消。但是,如果使用TerminateThread,那么在拥有线程的进程终止运行之前,系统不撤消该线程的堆栈。追答

以上回答来源于网上,你可以参考一下

追问

能写一条终止的命令吗..

看着不会

追答

exitthread(hthread);
hthread是要终止线程的句柄

追问

谢谢

本回答被提问者和网友采纳
参考技术B /*这是我写的最简单的多线程程序,看懂不?*/
#include <windows.h>
#include <stdio.h>
//#include <strsafe.h>

DWORD WINAPI ThreadProc1( LPVOID lpParam )


int i=0,j=0;
while(1)

printf("hello,this thread 1 ...\n");

//延时
for(i=0;i<200000000;i++)

;




DWORD WINAPI ThreadProc2( LPVOID lpParam )


int i=0,j=0;
while(1)

printf("hello,this thread 2 ...\n");

//延时
for(i=0;i<200000000;i++)

;




void main()

int i=0;
//创建线程1
CreateThread(
NULL, // default security attributes
0, // use default stack size
ThreadProc1, // thread function
NULL, // argument to thread function
0, // use default creation flags
NULL); // returns the thread identifier

//创建线程2
CreateThread(
NULL, // default security attributes
0, // use default stack size
ThreadProc2, // thread function
NULL, // argument to thread function
0, // use default creation flags
NULL); // returns the thread identifier

//让主线程进入循环,主线程若退出,子线程1,2会被系统“杀死”
while(1)

printf("hello,this thread 0 ...\n");

//延时
for(i=0;i<200000000;i++)
;


以上是关于C语言如何终止线程?的主要内容,如果未能解决你的问题,请参考以下文章

C语言如何终止线程?

C++多线程强制终止

C++多线程强制终止

c语言实现多线程

C语言 pthread_join()函数

c语言中,创建的子线程如何给主线程发消息?