Jim C. Nasby wrote:
On Tue, Jan 10, 2006 at 11:31:13AM +0100, Joachim Wieland wrote:
No, cancelling the sleep works (at least for Unix). Isn't cancelling
implemented via a signal that interrupts select() ?
Anyway, I've changed it, removing the ~2000s limit is a good point.
+ while (secs > 1.0)
+ {
+ pg_usleep(1000000);
+ CHECK_FOR_INTERRUPTS();
+ secs -= 1.0;
+ }
Won't this result in a call to pg_sleep with a long sleep time ending up
sleeping noticeably longer than requested?
Looks like it to me.
Instead of using a counter it might be better to set a target end time
and check that against the value returned from time() or gettimeofday().
cheers
andrew
---------------------------(end of broadcast)---------------------------
TIP 2: Don't 'kill -9' the postmaster