注意事项:使用多线程切记不要操作全局变量的多次循环触发,比如while循环多次G变量或执行多次goto等!
996M2手游引擎
适用场景:
1. 服务器配置3000元以上的(在低配服务器上开启,会适得其反)。
2. 同地图负载过大,需要分流的,比如沙巴克、皇宫、活动地图,不影响其他地图玩家。
3. 人数超过500,明显存在压力的。
4. 对于目前承载有需求的,比如超变服。
对于3000服务器,建议10条以内,一万服务器可以开启30+,注意:`多线程不是越多越好,线程之间存在资源竞争,尽量线程复用。
开启方式:
路径:Mir200\Envir\MapInfo.txt地图配置 。
例如1:[3 盟重省]改成[3 盟重省 5]那么盟重省地图会在5号线程里面运行。
不配置的地图默认都在0号线程里运行。同时也可以把多个地图指定在一个线程里运行。
例如2:[0 比奇 5]这样 [比奇] 和 [盟重] 都在一个线程里运行。
注意事项:
* 线程数一定要控制在合理范围,避免资源浪费,从而导致效率下降。
* 尽量线程复用,比如活动地图,时间不会集中在一起,可以把这几个地图,指定到一个线程。
* 避免线程之间的文件读写 `文本操作类`,比如玩家分布在不同的线程里,
但是去同时读写一个文件,这会导致严重的性能下降,可以指定不同的文件名去读写,比如用UserId做文件名。
* 线程之间,变量尽量使用系统定义的:U,T,P,M..变量去操作,自定义变量存在切换时间,很少用到跨线程读写变量的,可以忽略。
* 版本的一些配置,尽量在引擎启动@Startup 的时候加载,不要反复加载,
例拾取配置,不要捡东西的时候,反复加载,这些都是多余的操作,造成CPU资源的浪费。
* 系统提供的定时器,都在0号线程运行,如果有用定时器刷怪,建议改掉,换成(SetEnvirOnTimer),在对应的场景里,去做刷怪操作。
* 地图切换触发时要注意,比如调用MapMove,Map 时,不会立刻取到要切换的地图名,建议放在对应的地图触发里执行 @EnterMap。
|