簡體   English   中英

如何正確退出程序?

[英]How do I properly exit my program?

使用C和Win32時,我遇到一個問題,即當發布退出消息時,程序凍結而不是關閉(例如,Alt-F4),並且必須以任務管理器結束該過程。

我在主循環中有這個:(問題已解決)

MSG msg;
while(1)
{
    while(PeekMessage(&msg, hwnd, 0, 0, PM_REMOVE))
    {
        if(msg.message == WM_QUIT)
        {
            terminate = 1;
            while(terminate != 3) //each thread increments "terminate" by 1 before returning
            {
                Sleep(1);
            }
            return 0;
        }
        DispatchMessage(&msg);
    }
    Sleep(1);
}

它將顯示“確定!” 在控制台中,然后凍結。

我認為這可能是因為我有多個線程並且它們沒有正確終止(但是我讀到,如果我從main()函數返回,則其他線程應自動終止)。 如果有幫助,那么其中一個線程是OpenGL渲染線程。

main功能只是一個線程,您將終止該線程。 但是,要使進程結束,需要正確終止所有線程,否則它將永遠運行。 您需要保留對線程的引用,並在收到WM_QUIT消息后終止它們。

退出是要退出整個過程。 當您調用exit時,您的進程將清理,例如,調用在atexit中注冊的函數,或者在使用c ++的情況下調用全局對象的析構函數。 那abort()或terminateProcess呢?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM