ET版本:5
Net版本::core 3.1
服务端问题
个人理解:看过一些有关ETTask原理的文章,只能模糊理解到是基于状态机原理,将逻辑分片执行,并没有开启新的线程。
问题:一直以来有一个疑惑,当我需要执行一个耗时的操作,我会在Task中开启新线程执行该逻辑(不等待),这样就不会阻塞主线程。但在ETTask中,该耗时的操作还是由主线程执行,那么这样不就相当于阻塞了主线程了吗?
描述的可能不太明确,就是很疑惑为什么ETTask不用开启新线程去执行耗时操作,而是让主线程去执行,这么做为什么不会阻塞主线程逻辑。(例如:玩家A进入地图,服务端创建地图、生成10w只怪物时,我使用await等待创建地图的这段逻辑由主线程执行的话,那么这个时间段中,服务端的整个逻辑不就“停顿”在这,为什么不会卡住其他玩家BCD的操作呢?)
大佬们如有时间的话,麻烦帮我解惑一下。
“但在ETTask中,该耗时的操作还是由主线程执行” 应该不是由主线程而是其他线程执行的,只是执行完后同步了上下文。一点拙见
dzf112233 我尝试在ETTask中打印线程ID,每次打印出来都是主线程ID在执行逻辑,所以就不明白其中的奥秘…