[pve-devel] [PATCH common] add upid_wait method

Thomas Lamprecht t.lamprecht at proxmox.com
Fri Jan 22 17:42:40 CET 2016



On 01/22/2016 05:32 PM, Dietmar Maurer wrote:
>> As sleep returns the seconds actually slept we could save the return
>> value after the sleep call
>> and only call waitfunc if we slept for $sleep_intervall seconds? or
>> checking if $! != EINTR.
>>
>> Or is there a better way?
> I usually implement and use a sleep_until() command:
>
> sub sleep_until {
>     my ($self, $end_time) = @_;
>
>     for (;;) {
>         my $cur_time = time();
>
>         last if $cur_time >= $end_time;
>
>         CORE::sleep(1);
>     }
> }
>
> I guess you need to adopt that for shorter periods (less that 1 second).

But do we need that here? I mean upid_wait will be called normally from 
a forked worker to a longer running task so in the worst case we return 
a bit less than a second to late.

Or do you mean that we should also implement the sleep_until in 
PVE::Tools? Then yes, there it would be nice to have at least ms or even 
µs resolution.

>
> We already have/use that code in src/PVE/HA/Env.pm

Ah yes, true, that code is somehow familiar. Much thanks for the 
reminder, will resend.






More information about the pve-devel mailing list