小编Céd*_*ond的帖子

pthread 比没有线程慢

你好,我试图在我的塔防中添加线程以使其更快,但现在速度变慢了。

代码结构非常简单

主要以 sdl opengl init 和 init 一切开始。然后游戏循环。无线程顺序: 1:keyboard and mouse event first 2:gameManager 3:drawGlScene

游戏管理器计算一切:移动怪物,攻击怪物,创建攻击动画和声音,检查你是赢了还是输了,如果波完成了,怪物产生,如果速度模式打开,这个功能会运行2次。和其他一些小功能。

绘图功能使用所有数据来绘制所有内容。使用绘图功能有 0 个数据修改

我使用的 cpu 是四核,这里是主要的可视化部分第一步初始化线程的东西

int main ( int argc, char** argv )
{
 pthread_t t_engine;
 pthread_attr_t attr;
 pthread_attr_init(&attr);
 pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
Run Code Online (Sandbox Code Playgroud)

然后所有其他初始化内容和游戏循环开始以 sdl 事件切换然后(仍在游戏循环中):

//calculate everything if we are in playing gamestate
    if(id == MODE_PLAY)
    {
        rc = pthread_create(&t_engine, &attr, gameManager, (void *)t);
        if (rc)
        {
            printf("ERROR; return code from pthread_create() is %d\n", rc);
            exit(-1);
        }
        //gameManager((void *)t);
    }

    //draw everything
    DrawGLScene(); …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading pthreads thread-safety

1
推荐指数
1
解决办法
1601
查看次数

标签 统计

c++ ×1

multithreading ×1

pthreads ×1

thread-safety ×1