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().



---------------------------(end of broadcast)---------------------------
TIP 2: Don't 'kill -9' the postmaster

Reply via email to