81中文

繁体 | 简体
81中文 > 游戏制作:我要重振国产游戏 > 第101章 所谓苏学(5K)

第101章 所谓苏学(5K)(4/6)

或者在一群只会算加减乘除的数学人之间,忽然开始讲微积分!

但能不能做到呢?

并非完全不能,只是需要做大量的「时代适配妥协」!

虽然不是理想中的完美落地,而是基於现有硬体和工具链的阉割版落地。

但苏砚承觉得,放在这个时代,这也勉强够用了。

程式设计师们:居然只是,勉强够用吗?

会议室里。

程式设计师们不敢说话。

纷纷看着渡边连续不断的发问,哪怕有些问题听上去甚至像是找茬。

甚至,从第一个问题,渡边和苏砚承两人就跟吵架似的。

「无数的例子证明过,单核搞多线程就是浪费资源!

线程切换的开销会吃掉所有效率!

所以多线程在游戏环境中,其性能表现反而不如单线程,」

渡边正在厉声质问:「所以你怎麽会想到这个的呢!」

苏砚承笑而不语。

嗯,所以是的,其实多线程的优化思路,早已有之。

用开饭店来简单比喻的话。

多核CPU,那就是好几个灶台,好几个厨师,能同时炒不同的菜。

而单核的CPU,只有一个灶台,一个厨师。

他没法同时炒两盘菜。

但多线程思路下,可以让厨师先炒一下A菜,关火,再炒几下B菜,再关火,切回A菜————

只不过切换速度是毫秒级别的快,所以在外人看来,就像两盘菜在同时炒。

但用专业一点的角度来看,线程的切换,是有开销的。

你大厨洗锅、换铲子都需要额外的时间。

所以如果强行把游戏核心逻辑,拆分成多个线程来运行。

不仅不会带来效率的提升,反而会让游戏变卡。

这就是,当下行业的共识是:「单核搞多线程,纯属自找麻烦!」

只是苏砚承更先进的想法。

「那如果我不拆分核心计算,而是只拆分辅助任务,只做功能拆分的轻量多线程呢?」

渡边和程式设计师眨眼:「————"

苏砚承笑。

听不懂了吧?

没关系,咱们来细细解释。

「注意这里,该记笔记了啊!」

「还有看我干嘛,看黑板啊!」

他重重敲黑板。

众人赶紧正襟危坐,纷纷捏紧笔,认真听讲。

「首先,音频播放、文件预加载、数据接收这些轻任务,其实并不会占用大量的CPU时间,甚至还要长时间的还经常等活儿干」——

「比如音频线程,要等音效卡缓冲区空了,才需要运行。」

「文件线程,要等硬碟读写完成,才需要处理!」

苏砚承说,「而当我们将它们拆成独立线程後,负责渲染和逻辑的主线程在等待硬体响应的间隙,这部分间隙的时间,我们就可以分给辅助线程。」

相当於厨师炒主菜的间隙,顺手切个配菜,完全不耽误主菜进度,还能提高厨房的整体效率。

很简单的道理,只不过如今的开发者,不清楚哪些任务适合做线程拆分,而哪些不适合。

所以做出来後,反而线程冲突、性能反而下降。

说出来,很简单。

但听完之後,会议室内全体还是感到剧烈的震撼。

大家都是有点资历的程式设计师了,可但感知到全新的知识和思路时。

还是如第一趟编程课,打出「helloworld」般兴奋。
本章未完,请翻下一页继续阅读.........
『加入书签,方便阅读』