最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

3,预初始化(一)(大象无形9.2)

IT圈 admin 39浏览 0评论

3,预初始化(一)(大象无形9.2)

正如书中所说,预初始化流程由FEngineLoop::PreInit()所实现

主要处理流程
1,设置路径:当前程序路径,当前工作目录路径,游戏的工程路径

2,设置标准输出:设置GLog系统输出的设备,是输出到命令行还是何处。

3,初始化游戏主线程,是把当前线程当作主线程(因为SetupGameThread()没起作用)


4,初始化随机数系统

5,初始化TaskGraph任务系统,并按照当前平台的核心数量来设置TaskGraph的工作线程数量。同时开启线程池,生成一堆线程。线程数目远远大于核心。

可以看到,我的电脑是8核

现在看看任务线程数

获取逻辑处理器的数量,包括超线程处理器16

现在返回上一级,设定好监视,看看任务线程数

下一步很关键,是如果逻辑处理器大于物理核心,则设置线程数=逻辑处理器数目-2,监视线程变量为14

再考虑到服务器线程,则最大需要26个线程

当然,还需要进一步计算,返回上一层,返回的结果是14,
到最后,加上线程池,是开了47个线程。

6,调用LoadCoreModules(),处理那些UObject

接下来通过预加载其他模块

3,预初始化(一)(大象无形9.2)

正如书中所说,预初始化流程由FEngineLoop::PreInit()所实现

主要处理流程
1,设置路径:当前程序路径,当前工作目录路径,游戏的工程路径

2,设置标准输出:设置GLog系统输出的设备,是输出到命令行还是何处。

3,初始化游戏主线程,是把当前线程当作主线程(因为SetupGameThread()没起作用)


4,初始化随机数系统

5,初始化TaskGraph任务系统,并按照当前平台的核心数量来设置TaskGraph的工作线程数量。同时开启线程池,生成一堆线程。线程数目远远大于核心。

可以看到,我的电脑是8核

现在看看任务线程数

获取逻辑处理器的数量,包括超线程处理器16

现在返回上一级,设定好监视,看看任务线程数

下一步很关键,是如果逻辑处理器大于物理核心,则设置线程数=逻辑处理器数目-2,监视线程变量为14

再考虑到服务器线程,则最大需要26个线程

当然,还需要进一步计算,返回上一层,返回的结果是14,
到最后,加上线程池,是开了47个线程。

6,调用LoadCoreModules(),处理那些UObject

接下来通过预加载其他模块

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论