From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Martijn Muijsers Date: Fri, 10 Feb 2023 20:56:11 +0100 Subject: [PATCH] Yielding ChunkHolderManager License: AGPL-3.0 (https://www.gnu.org/licenses/agpl-3.0.html) Gale - https://galemc.org diff --git a/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkHolderManager.java b/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkHolderManager.java index e5d9c6f2cbe11c2ded6d8ad111fa6a8b2086dfba..22720de9b94163b84dd6bf6ddf8b3e57eeb9389c 100644 --- a/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkHolderManager.java +++ b/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkHolderManager.java @@ -36,6 +36,8 @@ import net.minecraft.world.level.ChunkPos; import net.minecraft.world.level.chunk.ChunkAccess; import net.minecraft.world.level.chunk.ChunkStatus; import org.bukkit.plugin.Plugin; +import org.galemc.gale.executor.lock.MultipleWaitingBaseThreadsYieldingLock; +import org.galemc.gale.executor.lock.YieldingLock; import org.slf4j.Logger; import java.io.IOException; import java.text.DecimalFormat; @@ -64,7 +66,7 @@ public final class ChunkHolderManager { private static final long NO_TIMEOUT_MARKER = -1L; - final ReentrantLock ticketLock = new ReentrantLock(); + final YieldingLock ticketLock = new MultipleWaitingBaseThreadsYieldingLock(new ReentrantLock()); // Gale - base thread pool - yielding ChunkHolderManager private final SWMRLong2ObjectHashTable chunkHolders = new SWMRLong2ObjectHashTable<>(16384, 0.25f); private final Long2ObjectOpenHashMap>> tickets = new Long2ObjectOpenHashMap<>(8192, 0.25f);