From 4611461b3ee9885fbb543c889641c86f265f5195 Mon Sep 17 00:00:00 2001 From: Andrea Cavalli Date: Sat, 3 Apr 2021 02:35:31 +0200 Subject: [PATCH] Use sleep on non-x86 architectures to avoid high cpu usage --- .../java/it/tdlight/common/ResponseReceiver.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main/java/it/tdlight/common/ResponseReceiver.java b/src/main/java/it/tdlight/common/ResponseReceiver.java index e6fb3fa..095cd9e 100644 --- a/src/main/java/it/tdlight/common/ResponseReceiver.java +++ b/src/main/java/it/tdlight/common/ResponseReceiver.java @@ -50,11 +50,17 @@ public class ResponseReceiver extends Thread implements AutoCloseable { public void run() { int[] sortIndex; try { - while(!closeRequested || !registeredClients.isEmpty()) { + boolean useSpinWait = "amd64".equalsIgnoreCase(System.getProperty("os.arch")); + while (!closeRequested || !registeredClients.isEmpty()) { int resultsCount = NativeClientAccess.receive(clientIds, eventIds, events, 2.0 /*seconds*/); if (resultsCount <= 0) { - Thread.onSpinWait(); + if (useSpinWait) { + Thread.onSpinWait(); + } else { + //noinspection BusyWait + Thread.sleep(20); + } continue; } @@ -150,6 +156,8 @@ public class ResponseReceiver extends Thread implements AutoCloseable { this.registeredClients.addAll(closedClients); } } + } catch (InterruptedException ex) { + throw new IllegalStateException(ex); } finally { this.closeWait.countDown(); }