From 98b1090c0edd70abe2f7f257ebf3ec55f8843888 Mon Sep 17 00:00:00 2001 From: Byeonggil Jun Date: Thu, 30 Jan 2025 10:29:45 -0700 Subject: [PATCH] Make immediately return when we have already passed the target physical time --- core/threaded/reactor_threaded.c | 5 ++--- include/core/threaded/reactor_threaded.h | 4 +++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/core/threaded/reactor_threaded.c b/core/threaded/reactor_threaded.c index 493bd5a3e..7872bf9db 100644 --- a/core/threaded/reactor_threaded.c +++ b/core/threaded/reactor_threaded.c @@ -199,9 +199,8 @@ bool wait_until(instant_t wait_until_time, lf_cond_t* condition) { LF_PRINT_DEBUG("-------- Waiting until physical time " PRINTF_TIME, wait_until_time - start_time); // Check whether we actually need to wait, or if we have already passed the timepoint. interval_t wait_duration = wait_until_time - lf_time_physical(); - if (wait_duration < MIN_SLEEP_DURATION) { - LF_PRINT_DEBUG("Wait time " PRINTF_TIME " is less than MIN_SLEEP_DURATION " PRINTF_TIME ". Skipping wait.", - wait_duration, MIN_SLEEP_DURATION); + if (wait_duration < 0) { + LF_PRINT_DEBUG("We have already passed " PRINTF_TIME ". Skipping wait.", wait_until_time); return true; } diff --git a/include/core/threaded/reactor_threaded.h b/include/core/threaded/reactor_threaded.h index fe14beb8e..727b3839e 100644 --- a/include/core/threaded/reactor_threaded.h +++ b/include/core/threaded/reactor_threaded.h @@ -93,7 +93,9 @@ void lf_synchronize_with_other_federates(void); * if that event time matches or exceeds the specified time. * * The mutex lock associated with the condition argument is assumed to be held by - * the calling thread. + * the calling thread. This mutex is released while waiting. If the current physical + * time has already passed the specified time, then this function + * immediately returns true and the mutex is not released. * * @param env Environment within which we are executing. * @param wait_until_time The time to wait until physical time matches it.