我有点困惑,想知道我是否被误导了,在另一篇文章中我被告知“只有当你明确地创建新线程时才会创建新线程。C++ 程序默认是单线程的。” 当我打开没有在 ollydbg 中显式创建新线程的程序时,我多次注意到通常有 2 个线程在运行。我想在不停止执行的情况下了解消息循环是如何工作的,我得到的解释不足以解释它是如何工作的。
消息循环是创建一个新线程还是占用了主线程?如果它占用主线程,它是否会在其他所有内容都执行后才这样做,而不管代码顺序如何?如果它不这样做但仍然占用主线程,它是否会产生一个新线程以便程序可以执行而不是卡在消息循环中?
编辑:通过实验解决了我的大部分问题。消息循环占用主线程和代码后面的任何代码:
while (GetMessage (&messages, NULL, 0, 0))
{
TranslateMessage(&messages);
DispatchMessage(&messages);
}
return messages.wParam;
不会执行,除非由于程序卡在消息循环中而执行特殊操作以使其执行。在执行的窗口过程中放置无限循环会导致程序崩溃。我仍然不明白多线程的奥秘,但在我更喜欢的程度。