NPLRuntime
NPLRuntime copied to clipboard
多线程处理workitem阻塞问题
批量使用AsyncLoader时,一次性推入workitem过多,会严重阻塞延迟。 需要动态根据workitem数量申请多线程处理。
这个主要是IO问题, 和线程数量关系不是很大,目前已经是多线程。 建议用Loading条解决 (可以动态获得数量),或者做一些场景预加载,比如用摄影机将周围看一下, 但是前面用Loading条挡住,Paracraft里面有些玩家世界就是这样处理的。
如果希望增加线程数量, 可以修改引擎中的:
CAsyncLoader::GetSingleton().Start(2);
不过应该影响不大,因为硬盘和显卡只有一个。
与异步加载线程相关的数据,全部扩大到10倍。workitem队列处理速度会明显加快。扩展大到100倍,处理速度更快,但会降低FPS。这些参数,能不能根据cpu使用状况,做成动态的。