【发布时间】:2011-08-02 12:25:32
【问题描述】:
我有一个这样的线程:
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,但是挂了,我认为停止线程不是一个好的解决方案。
有人有想法吗?
最好的问候 本杰迈耶
【问题讨论】:
-
不要使用
CreateThread(),除非您知道它不做什么。CreateThread()没有正确初始化运行时,也没有设置 CRT 终结挂钩以在线程死亡时执行。在此处查看讨论:stackoverflow.com/questions/331536/…
标签: c multithreading winapi createthread