Concurrent Chunk Management Engine for Forge -The Twilight Forest fix
修复 c2mef 与暮色森林的兼容性问题,同时修复漏洞并提升性能。
介绍
描述
修复 c2mef 与暮色森林之间的兼容性问题,同时修复错误并提升性能
已修复
线程安全修复
-
修复了
ConcurrentFlagMatrix.setif()中的竞态条件- 位置:
c2me_fixes_worldgen_threading_issues/.../ConcurrentFlagMatrix.java - 问题:
setif()方法中的读锁与写锁之间存在竞态条件 - 解决方案:在整个操作过程中使用写锁,确保操作的原子性
- 位置:
-
防止获取锁时可能出现的死锁
- 位置:
c2me_base/.../AsyncCombinedLock.java、SchedulingAsyncCombinedLock.java - 问题:以无序方式获取锁可能导致死锁
- 解决方案:对锁名称排序,确保获取锁的顺序一致
- 位置:
-
修复错误处理中的无限递归
- 位置:
AsyncCombinedLock.java、SchedulingAsyncCombinedLock.java - 问题:错误处理路径中的递归调用可能导致栈溢出
- 解决方案:改为抛出
IllegalStateException,而不是递归调用
- 位置:
-
增强对象池安全性
- 位置:
c2me_base/.../SimpleObjectPool.java - 新增:将对象归还到对象池之前进行空值检查并清理对象状态
- 位置:
更改
错误处理改进
-
将 printStackTrace() 替换为规范的日志记录
- 位置:
SchedulingAsyncCombinedLock.java、NeighborLockingTask.java、NoTickSystem.java、MixinChunkStatus.java、C2MEMod.java - 更改:使用 SLF4J Logger 替代打印堆栈跟踪和 System.out.printf,以便更好地管理日志
- 位置:
-
添加对 ForkJoinPool 的兼容支持
- 位置:
c2me_fixes_chunkio_threading_issues/.../SynchronizedCodec.java - 新增:支持
ManagedBlocker,防止 ForkJoinPool 线程饥饿
- 位置:
性能
区块生成速度优化
-
采用激进的自旋等待策略,实现超低延迟
- 位置:
c2me_base/.../CFUtil.java - 优化:纯自旋 10,000 次后暂停 1ns,尽量减少线程上下文切换
- 效果:最大限度缩短等待任务完成的时间
- 位置:
-
优化高吞吐量 I/O 线程
- 位置:
c2me_rewrites_chunkio/.../C2MEStorageThread.java - 优化:自旋 10,000 次后暂停 100ns,并优化读取请求处理
- 效果:最大限度提升磁盘 I/O 吞吐量
- 位置:
-
优化调度器批处理
- 位置:
c2me_base/.../SchedulingManager.java - 优化:移除未使用的计时代码,在 finally 块中立即重新调度,并批量调度任务
- 效果:让调度器保持满负荷运行
- 位置:
-
为优先级队列添加快速路径
- 位置:
c2me_base/.../DynamicPriorityQueue.java - 新增:添加
isEmpty()方法,实现 O(1) 快速检查 - 效果:减少队列检查开销
- 位置:
-
优化 NeighborLockingTask 中的锁检查
- 位置:
c2me_base/.../NeighborLockingTask.java - 优化:使用带索引的 for 循环替代增强型 for 循环,并缓存数组长度
- 效果:减少内存分配并提升循环性能
- 位置:
-
优化优先级距离计算
- 位置:
c2me_base/.../SchedulingManager.java - 优化:使用基于 long 的切比雪夫距离计算,避免创建 ChunkPos 对象
- 效果:减少优先级更新期间的对象分配
- 位置:
常见问题
Concurrent Chunk Management Engine for Forge -The Twilight Forest fix 支持哪些 Minecraft 版本?
Concurrent Chunk Management Engine for Forge -The Twilight Forest fix 支持 Minecraft Java 版 1.20.1,可用的加载器:Forge / NeoForge。下载时注意选择和你游戏版本一致的文件。
Concurrent Chunk Management Engine for Forge -The Twilight Forest fix 怎么安装?
先用 PCL2 或 HMCL 启动器安装对应版本的 Forge / NeoForge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。
dreamforSh 的其他作品
查看全部 →Tinker’s Planner Reborn
Tinkers' Blueprint 是 Tinkers' Construct 3 的客户端附属模组,玩家可以在蓝图界面中预览组装好的工具并查看其属性。
Datapack Load Error Fix
一款全面的 Minecraft 世界修复工具,可修复移除模组和数据包导致的常见问题。
TickAccelerate
TickAccelerate 可优化低 TPS 时的游戏刻运作,帮助减少卡顿。
Krypton Hybrid
Krypton Hybrid 是基于 Krypton fnp legacy 的分支,补上了旧版缺少的 Netty 优化,将 Speed Compression 的实现替换为原生 zstd 和 lz4 算法,并支持混合服务器。
评论
登录后评论和评分