From 5d2613873c0ba380aeae463aaa39563c14fbe08b Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Tue, 30 Apr 2024 21:25:34 +0200 Subject: [PATCH] Switch to monotonic System.nanoTime() --- src/main/java/org/syndicate_lang/actors/Promise.java | 6 +++--- .../org/syndicate_lang/actors/example/example2/Main.java | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/syndicate_lang/actors/Promise.java b/src/main/java/org/syndicate_lang/actors/Promise.java index a3657ec..db23cbc 100644 --- a/src/main/java/org/syndicate_lang/actors/Promise.java +++ b/src/main/java/org/syndicate_lang/actors/Promise.java @@ -170,11 +170,11 @@ public class Promise implements Future { if (delay == -1) { while (this.isPending()) this.wait(); } else { - long targetTime = System.currentTimeMillis() + unit.toMillis(delay); + long targetTime = System.nanoTime() + unit.toNanos(delay); while (this.isPending()) { - long now = System.currentTimeMillis(); + long now = System.nanoTime(); if (now >= targetTime) throw TIMEOUT_WAITING_FOR_PROMISE_RESOLUTION; - this.wait(targetTime - now); + this.wait(TimeUnit.NANOSECONDS.toMillis(targetTime - now)); } } } diff --git a/src/test/java/org/syndicate_lang/actors/example/example2/Main.java b/src/test/java/org/syndicate_lang/actors/example/example2/Main.java index a67435f..f19148d 100644 --- a/src/test/java/org/syndicate_lang/actors/example/example2/Main.java +++ b/src/test/java/org/syndicate_lang/actors/example/example2/Main.java @@ -47,7 +47,7 @@ public class Main extends Entity { t.message_(_forwarders.get(0), new IForwarder.SetPeer(_forwarders.get(_nActors - 1))); t.later(t0 -> { t0.log().info("Start"); - this._startTime = System.currentTimeMillis(); + this._startTime = System.nanoTime(); _forwarders.forEach(a -> t0.message_(a, new IForwarder.HandleMessage(0))); }); } @@ -57,7 +57,7 @@ public class Main extends Entity { if (body instanceof IForwarder.HandleMessage) { this._remainingToReceive--; if (this._remainingToReceive == 0) { - double delta = (System.currentTimeMillis() - this._startTime) / 1000.0; + double delta = (System.nanoTime() - this._startTime) / 1000000000.0; long nMessages = (long) _nActors * (long) _nRounds; double hz = nMessages / delta; turn.quit();