mirror of
https://github.com/Dreeam-qwq/Gale.git
synced 2025-12-30 20:29:23 +00:00
31 lines
1.7 KiB
Diff
31 lines
1.7 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Martijn Muijsers <martijnmuijsers@live.nl>
|
|
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<NewChunkHolder> chunkHolders = new SWMRLong2ObjectHashTable<>(16384, 0.25f);
|
|
private final Long2ObjectOpenHashMap<SortedArraySet<Ticket<?>>> tickets = new Long2ObjectOpenHashMap<>(8192, 0.25f);
|