[英]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.