我在电视的linux系统上运行游戏,当我退出游戏时,系统会崩溃。
从输出日志中,我知道我的游戏已经相当,但系统崩溃了。
主要功能如下:
int main(int argc, char** argv)
{
......
SDL_Quit();
printf("Log: exit end. \n);// it's printed on console
return 0;
}
我可以找到关于Log:exit end的输出日志。那么游戏已经退出了吗?
我发现在创建主题后,游戏退出仅崩溃。
以下是以下主题中的run函数:
while ( pThread->m_running )
{
string str;
string cmdStr;
if ( pThread->GetSendMsg(str, cmdStr) )
{
string returnStr = Connection::DealHttpSendMsg( str, cmdStr );
pThread->AddReturnMsg( returnStr );
haveData = true;
}
else
{
SDL_Delay(100);
haveData = false;
}
}
我的问题是如果m_running
总是如此。所以当我退出游戏时,线程仍在运行。它会导致崩溃吗?
答案 0 :(得分:1)
如果该线程试图访问主线程同时销毁的资源。
如果您的工作线程无效,那么退出应用程序不会崩溃。
#include <stdio.h>
#include <unistd.h>
#include <pthread.h>
void* run_me(void*)
{
while (1)
{
printf("Sleeping..\n");
sleep(1);
}
}
int main()
{
pthread_t my_thread;
pthread_create(&my_thread, NULL, &run_me, NULL);
sleep(2);
return 0;
}
答案 1 :(得分:0)
return 0;
仅终止主线程。尝试使用exit(0)代替。