mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-29 12:27:59 +01:00
Use CLQ for main thread tasks.
Means netty threads aren't blocked for long synchronisations whilst tasks are running.
This commit is contained in:
parent
911a5d776b
commit
19d9d39eac
54
CraftBukkit-Patches/0158-Use-CLQ-for-main-thread-tasks.patch
Normal file
54
CraftBukkit-Patches/0158-Use-CLQ-for-main-thread-tasks.patch
Normal file
@ -0,0 +1,54 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: md_5 <git@md-5.net>
|
||||
Date: Sun, 19 Apr 2015 09:19:39 +1000
|
||||
Subject: [PATCH] Use CLQ for main thread tasks.
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
|
||||
private long X = 0L;
|
||||
private final GameProfileRepository Y;
|
||||
private final UserCache Z;
|
||||
- protected final Queue<FutureTask<?>> j = Queues.newArrayDeque();
|
||||
+ protected final Queue<FutureTask<?>> j = new java.util.concurrent.ConcurrentLinkedQueue<FutureTask<?>>(); // Spigot, PAIL: Rename
|
||||
private Thread serverThread;
|
||||
private long ab = ay();
|
||||
|
||||
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
|
||||
this.methodProfiler.a("jobs");
|
||||
Queue queue = this.j;
|
||||
|
||||
- synchronized (this.j) {
|
||||
- while (!this.j.isEmpty()) {
|
||||
- SystemUtils.a((FutureTask) this.j.poll(), MinecraftServer.LOGGER);
|
||||
- }
|
||||
- }
|
||||
+ // Spigot start
|
||||
+ FutureTask<?> entry;
|
||||
+ int count = this.j.size();
|
||||
+ while ((entry = this.j.poll()) != null && count-- > 0) {
|
||||
+ SystemUtils.a(entry, MinecraftServer.LOGGER);
|
||||
+ }
|
||||
+ // Spigot end
|
||||
|
||||
this.methodProfiler.c("levels");
|
||||
|
||||
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
|
||||
ListenableFutureTask listenablefuturetask = ListenableFutureTask.create(callable);
|
||||
Queue queue = this.j;
|
||||
|
||||
- synchronized (this.j) {
|
||||
- this.j.add(listenablefuturetask);
|
||||
- return listenablefuturetask;
|
||||
- }
|
||||
+ // Spigot start
|
||||
+ this.j.add(listenablefuturetask);
|
||||
+ return listenablefuturetask;
|
||||
+ // Spigot end
|
||||
} else {
|
||||
try {
|
||||
return Futures.immediateFuture(callable.call());
|
||||
--
|
Loading…
Reference in New Issue
Block a user