From 3d8c2f1fc514a83aacbfd30059a6919c15861f00 Mon Sep 17 00:00:00 2001 From: redkale Date: Mon, 7 Oct 2024 22:22:25 +0800 Subject: [PATCH] =?UTF-8?q?fastWrite=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/org/redkale/net/AsyncConnection.java | 4 ++-- src/main/java/org/redkale/net/AsyncIOThread.java | 4 ++-- src/main/java/org/redkale/net/AsyncNioConnection.java | 11 +++++++---- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/redkale/net/AsyncConnection.java b/src/main/java/org/redkale/net/AsyncConnection.java index e79d37586..148b16aa8 100644 --- a/src/main/java/org/redkale/net/AsyncConnection.java +++ b/src/main/java/org/redkale/net/AsyncConnection.java @@ -273,12 +273,12 @@ public abstract class AsyncConnection implements Channel, AutoCloseable { throw new RedkaleException("fast-writer handler is null"); } for (Consumer c : consumers) { - this.fastWriteQueue.add(c); + this.fastWriteQueue.offer(c); } this.ioWriteThread.fastWrite(this); } - protected abstract void fastPrepare(Object selector); + protected abstract void fastPrepareInIOThread(Object selector); // --------------------- fast-write-end --------------------- protected void startRead(CompletionHandler handler) { diff --git a/src/main/java/org/redkale/net/AsyncIOThread.java b/src/main/java/org/redkale/net/AsyncIOThread.java index f72c59e38..202bcf5f6 100644 --- a/src/main/java/org/redkale/net/AsyncIOThread.java +++ b/src/main/java/org/redkale/net/AsyncIOThread.java @@ -142,7 +142,7 @@ public class AsyncIOThread extends WorkThread { } public final void fastWrite(AsyncConnection conn) { - fastQueue.add(Objects.requireNonNull(conn)); + fastQueue.offer(Objects.requireNonNull(conn)); selector.wakeup(); } @@ -163,7 +163,7 @@ public class AsyncIOThread extends WorkThread { try { AsyncConnection fastConn; while ((fastConn = fastQueue.poll()) != null) { - fastConn.fastPrepare(selector); + fastConn.fastPrepareInIOThread(selector); } Consumer register; diff --git a/src/main/java/org/redkale/net/AsyncNioConnection.java b/src/main/java/org/redkale/net/AsyncNioConnection.java index 23dad4526..545e0f4f9 100644 --- a/src/main/java/org/redkale/net/AsyncNioConnection.java +++ b/src/main/java/org/redkale/net/AsyncNioConnection.java @@ -177,11 +177,11 @@ abstract class AsyncNioConnection extends AsyncConnection { } @Override - protected void fastPrepare(Object selector) { - if (this.writePending) { - return; + protected void fastPrepareInIOThread(Object selector) { + ByteArray array = this.fastWriteArray; + if (!this.writePending) { + array.clear(); } - ByteArray array = this.fastWriteArray.clear(); Consumer func; while ((func = fastWriteQueue.poll()) != null) { func.accept(array); @@ -373,6 +373,9 @@ abstract class AsyncNioConnection extends AsyncConnection { this.writeByteTuple2Offset = 0; this.writeByteTuple2Length = 0; } + if (this.fastWriteArray != null) { + this.fastWriteArray.clear(); + } } int writeCount; if (writeByteBuffer != null) {