別の投稿で、「新しいスレッドは、明示的に作成した場合にのみ作成されます。C++ プログラムはデフォルトでシングル スレッドです。」ollydbg で新しいスレッドを明示的に作成しないプログラムを開くと、2 つのスレッドが実行されていることが多いことに何度も気付きました。実行を停止せずにメッセージループがどのように機能するかを理解したかったのですが、私が得た説明は、それがどのように機能するかを説明するのに非常に不十分でした.
メッセージ ループは新しいスレッドを作成しますか、それともメイン スレッドを占有しますか? コードの順序に関係なく、他のすべてが実行された後にメインスレッドを実行しますか? これを行わずにメイン スレッドを占有する場合、新しいスレッドを生成して、メッセージ ループでスタックする代わりにプログラムを実行できるようにしますか?
編集:実験で私の質問のほとんどを解決しました。メッセージ ループは、メイン スレッドとコードの後のすべてのコードを占有します。
while (GetMessage (&messages, NULL, 0, 0))
{
TranslateMessage(&messages);
DispatchMessage(&messages);
}
return messages.wParam;
プログラムがメッセージ ループでスタックしているため、プログラムを実行させるために何か特別なことを行わない限り実行されません。実行されるウィンドウ プロシージャに無限ループを配置すると、プログラムがクラッシュします。私が好む程度にオリーにいるとき、私はまだ複数のスレッドの謎を理解していません。