C 关闭线程方法

C 关闭线程方法,c,multithreading,winapi,C,Multithreading,Winapi,两者的区别是什么 ExitThread(exitcode); 及 ? 看起来它们做的事情是一样的,但它们一定有区别。这些函数做的事情非常不同ExitThread立即结束调用线程CloseHandle仅销毁句柄,从而删除对线程对象的引用。对手柄闭合的螺纹无影响;线程将继续正常执行。通常,线程句柄在线程完成后关闭(例如,在使用WaitForSingleObject等待其完成后)。但有时,仍在运行的线程的句柄被关闭;这通常被称为脱线。如果应用程序“忘记”线程并且不等待其完成,则需要执行此操作;应该关

两者的区别是什么

ExitThread(exitcode);

?


看起来它们做的事情是一样的,但它们一定有区别。

这些函数做的事情非常不同
ExitThread
立即结束调用线程
CloseHandle
仅销毁句柄,从而删除对线程对象的引用。对手柄闭合的螺纹无影响;线程将继续正常执行。通常,线程句柄在线程完成后关闭(例如,在使用
WaitForSingleObject
等待其完成后)。但有时,仍在运行的线程的句柄被关闭;这通常被称为脱线。如果应用程序“忘记”线程并且不等待其完成,则需要执行此操作;应该关闭这样一个线程的句柄,以便内核在线程完成时自动销毁相关资源


另请参见一个类似问题的答案:

这些函数的作用截然不同
ExitThread
立即结束调用线程
CloseHandle
仅销毁句柄,从而删除对线程对象的引用。对手柄闭合的螺纹无影响;线程将继续正常执行。通常,线程句柄在线程完成后关闭(例如,在使用
WaitForSingleObject
等待其完成后)。但有时,仍在运行的线程的句柄被关闭;这通常被称为脱线。如果应用程序“忘记”线程并且不等待其完成,则需要执行此操作;应该关闭这样一个线程的句柄,以便内核在线程完成时自动销毁相关资源


另请参见一个类似问题的答案:

这些函数的作用截然不同
ExitThread
立即结束调用线程
CloseHandle
仅销毁句柄,从而删除对线程对象的引用。对手柄闭合的螺纹无影响;线程将继续正常执行。通常,线程句柄在线程完成后关闭(例如,在使用
WaitForSingleObject
等待其完成后)。但有时,仍在运行的线程的句柄被关闭;这通常被称为脱线。如果应用程序“忘记”线程并且不等待其完成,则需要执行此操作;应该关闭这样一个线程的句柄,以便内核在线程完成时自动销毁相关资源


另请参见一个类似问题的答案:

这些函数的作用截然不同
ExitThread
立即结束调用线程
CloseHandle
仅销毁句柄,从而删除对线程对象的引用。对手柄闭合的螺纹无影响;线程将继续正常执行。通常,线程句柄在线程完成后关闭(例如,在使用
WaitForSingleObject
等待其完成后)。但有时,仍在运行的线程的句柄被关闭;这通常被称为脱线。如果应用程序“忘记”线程并且不等待其完成,则需要执行此操作;应该关闭这样一个线程的句柄,以便内核在线程完成时自动销毁相关资源


另请参见类似问题的答案:

是。这很明显。CloseHandle不会杀死句柄关闭的线程。相反,它“分离”了线。而且,它不会造成资源泄漏;相反,它的目的是避免线程对象的资源泄漏。这很明显。CloseHandle不会杀死句柄关闭的线程。相反,它“分离”了线。而且,它不会造成资源泄漏;相反,它的目的是避免线程对象的资源泄漏。这很明显。CloseHandle不会杀死句柄关闭的线程。相反,它“分离”了线。而且,它不会造成资源泄漏;相反,它的目的是避免线程对象的资源泄漏。这很明显。CloseHandle不会杀死句柄关闭的线程。相反,它“分离”了线。而且,它不会造成资源泄漏;相反,它的目的是避免线程对象的资源泄漏。
CloseHandle(threadHandle);