gpt4 book ai didi

正确终止正在运行的线程 "works"

转载 作者:太空宇宙 更新时间:2023-11-04 02:16:33 26 4
gpt4 key购买 nike

我有一个线程是这样的:

DWORD WINAPI message_loop_thread(LPVOID dummy) {
MSG message;
while (GetMessage(&message, NULL, 0, 0)) {
TranslateMessage(&message);
DispatchMessage(&message);
}
}

我用 CreateThread 启动它:

DWORD thread_id;
CreateThread(0, 0, message_loop_thread, 0, 0, &thread_id);

这似乎可行,但我怎样才能正确关闭此线程?通常线程正在等待 GetMessage,所以我认为线程被阻塞了。

有什么好的方法吗?我尝试了 TerminateThread,但它挂起,我认为这不是停止线程的好解决方案。

有人有想法吗?

最好的问候本杰迈尔

最佳答案

正确的方法是将WM_QUIT 发送到thread_id。为此,您使用 PostThreadMessage()。作为响应,GetMessage 返回 0,while 循环退出,函数退出(不正确的是,您缺少 return 语句)。当线程的顶层函数退出时,线程结束。

关于正确终止正在运行的线程 "works",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6912042/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com