Re: Restart pg_usleep when interrupted
От | Nathan Bossart |
---|---|
Тема | Re: Restart pg_usleep when interrupted |
Дата | |
Msg-id | ZpA4_Pw14FCP6025@nathan обсуждение исходный текст |
Ответ на | Re: Restart pg_usleep when interrupted (Sami Imseih <samimseih@gmail.com>) |
Ответы |
Re: Restart pg_usleep when interrupted
Re: Restart pg_usleep when interrupted |
Список | pgsql-hackers |
On Thu, Jul 11, 2024 at 01:10:25PM -0500, Sami Imseih wrote: >> I'm curious why we wouldn't just subtract "elapsed_time" from "delay" at >> the bottom of the while loop to avoid needing this extra check. > > Can you elaborate further? I am not sure how this will work since delay is a timespec > and elapsed time is an instr_time. > > Also, in every iteration of the loop, the delay must be set to the remaining time. The > purpose of the elapsed_time is to make sure that we don´t surpass requested time > delay as an additional safeguard. I'm imagining something like this: struct timespec delay; TimestampTz end_time; end_time = TimestampTzPlusMilliseconds(GetCurrentTimestamp(), msec); do { long secs; int microsecs; TimestampDifference(GetCurrentTimestamp(), end_time, &secs, µsecs); delay.tv_sec = secs; delay.tv_nsec = microsecs * 1000; } while (nanosleep(&delay, NULL) == -1 && errno == EINTR); -- nathan
В списке pgsql-hackers по дате отправления: