小编Nat*_*Dre的帖子

你如何在Windows上安装Boost.Build?

http://www.boost.org/boost-build2/doc/html/bbv2/installation.html

尝试遵循这些说明,但它们不起作用.

我做了什么:

打开cmd.exe; cd C:\ BoostBuild\boost-build.\ bootstrap.bat

我得到了什么:

C:\ BoostBuild\boost-build>.\ bootstrap.bat'.\ bootstrap.bat'未被识别为内部或外部命令,可运行程序或批处理文件.

c++ boost install build

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

通过设置关联性在单核上运行多线程程序的性能?

简而言之:

在什么情况下可以在单个核心上运行多线程应用程序破坏性能?

如何将多线程应用程序的亲和力设置为仅使用一个核心?

长期:

我正试图在它自己的线程上运行2D引擎的物理特性.它起作用,并且起初表现似乎正常,但我决定告诉游戏尝试以10K FPS运行并且物理速度为120FPS,进入任务管理器并将亲和力设置为程序只能使用一个核心.

在将亲和力设定为一个核心之前,FPS在~1700,然后达到~70FPS.我没想到那种减少.我告诉游戏尝试以300 FPS和60FPS的物理速度运行.

同样的事发生了.

我没有多想,所以我只是继续修改引擎.我在更改了一些绘图代码,300 FPS,60FPS物理后再次测试了它.允许所有核心管理300FPS就好了,单核FPS的亲和力下降到4.现在我知道在单核上运行多线程应用程序可能不是那么糟糕,或者我不知道发生什么时发生的事情您将亲和力设置为单个核心.

这是关于渲染/物理运行的方式......

循环开始

收集输入直到(1.0/FPS)过去.

致电更新.

锁定物理线程互斥体,因为游戏中的东西将使用物理数据,我不希望引擎更新任何内容,直到此更新调用中的所有内容都完成.

更新游戏中的所有内容,可以将渲染功能对象(包含绘制内容,绘制位置,如何绘制)发送到渲染队列.

解锁互斥锁.

渲染器在每个函数对象上调用operator()并将其从队列中删除.

更新屏幕.

重复循环.

物理线程循环:

    ALLEGRO_TIMER* timer(al_create_timer(1.0f / 60.0f));
    double prevCount(0);

    al_start_timer(timer);
    while(true)
    {
        auto_mutex lock(m_mutex);

        if(m_shutdown)
            break;
        if (!m_allowedToStep)
            continue;
                    // Don't run too fast. This isn't final, just simple test code.
        if (!(al_get_timer_count(timer) > prevCount))
            continue;

        prevCount = al_get_timer_count(timer);

        m_world->Step(1.0f / 60.0f, 10, 10); 
        m_world->ClearForces();

    }
Run Code Online (Sandbox Code Playgroud)

//注意:Auto mutex只是我创建的一个非常简单的对象,用于在构造函数中锁定互斥锁并在析构函数中解锁它.我正在使用Allegro 5的线程功能.

multithreading mutex affinity allegro5 physics-engine

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

你如何将LuaPlus纳入你的项目?

我从这里下载了visual2008文件(http://luaplus.org/projects/luaplus/files),但我不知道如何将它添加到我的项目中.它不像其他库,我只需要将include目录添加到我的Visual Studio文件夹,并将bin添加到我的system32或项目文件夹.也没有头文件.我正在使用Visual Studio 2010专业版.

c++ scripting lua include

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