关于多线程生成场景的问题
当比较多的需要动态生成场景加入主场景的时候的时候,为了防止卡住主线程,提升用户体验,
这个时候就需要用到辅助线程了。
可以在官网的api上看到thread
可以看到start(node,func) 就ok了
试一下,
创建一个辅助线程去跑help_thread 方法运行
报错了,仔细看一下原来是少了一个参数,因为start()的第三个参数userdata
于是改一下
ok了,现在可以动态的生成草方块而不会卡住主线程了,看起来就像多米诺骨牌一样,但是这样有点慢,可以尝试开启两个线程,一个生成左边半边,一个生成右面半边,于是开始改造
因为要大量创建的实例化同一个对象,要锁柱instance()
以及线程使用完毕后等待
还有一个比较重要的一点事,因为场景数不是线程安全的,所以要交到主线程去做
多线程跑生成中
结束,
int OS.get_processor_count()
这个方法可以返回当前机器的核心数,一般线程池开到核心数的两倍,在往上就会卡了(假设他没有做其他事情的话)
最后说一下,多线程的实例化其实非常慢,大概是main thread的十几倍
具体可以看https://github.com/godotengine/godot/issues/10970