Skip to content

Commit

Permalink
Merge pull request #514 from lf-lang/fix-wait-until
Browse files Browse the repository at this point in the history
Perform busy waiting when the wait duration is less than `MIN_SLEEP_DURATION`
  • Loading branch information
erlingrj authored Feb 7, 2025
2 parents 856e98a + 98b1090 commit 1e0267b
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 5 deletions.
5 changes: 2 additions & 3 deletions core/threaded/reactor_threaded.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}

Expand Down
4 changes: 2 additions & 2 deletions include/core/threaded/reactor_threaded.h
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,8 @@ 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. This mutex is released while waiting. If the wait time is
* too small to actually wait (less than MIN_SLEEP_DURATION), then this function
* 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.
Expand Down

0 comments on commit 1e0267b

Please sign in to comment.