NPLRuntime icon indicating copy to clipboard operation
NPLRuntime copied to clipboard

多线程处理workitem阻塞问题

Open higter opened this issue 6 years ago • 2 comments

批量使用AsyncLoader时,一次性推入workitem过多,会严重阻塞延迟。 需要动态根据workitem数量申请多线程处理。

higter avatar Jan 15 '19 08:01 higter

这个主要是IO问题, 和线程数量关系不是很大,目前已经是多线程。 建议用Loading条解决 (可以动态获得数量),或者做一些场景预加载,比如用摄影机将周围看一下, 但是前面用Loading条挡住,Paracraft里面有些玩家世界就是这样处理的。

如果希望增加线程数量, 可以修改引擎中的:

CAsyncLoader::GetSingleton().Start(2);

不过应该影响不大,因为硬盘和显卡只有一个。

LiXizhi avatar Jan 17 '19 09:01 LiXizhi

image 与异步加载线程相关的数据,全部扩大到10倍。workitem队列处理速度会明显加快。扩展大到100倍,处理速度更快,但会降低FPS。这些参数,能不能根据cpu使用状况,做成动态的。

higter avatar Jan 17 '19 10:01 higter