游戏退出后linux系统崩溃

时间:2011-03-27 06:29:42

标签: linux multithreading crash

我在电视的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总是如此。所以当我退出游戏时,线程仍在运行。它会导致崩溃吗?

2 个答案:

答案 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)代替。