多线程负载功能使用说明; 注意事项:使用多线程切记不要操作全局变量的多次循环触发,比如while循环多次G变量或执行多次goto等! 适用场景: 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 |