跳到正文

Concurrent Chunk Management Engine for Forge -The Twilight Forest fix

作者:dreamforSh

修复 c2mef 与暮色森林的兼容性问题,同时修复漏洞并提升性能。

收藏

介绍

介绍由机器翻译自 CurseForge 原页面,仅供参考。

描述

修复 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 的其他作品

查看全部 →