Обсуждение: select() for small sleep

Поиск
Список
Период
Сортировка

select() for small sleep

От
Andrew Dunstan
Дата:
I wrote:

>
>  There are a couple of other places where [select()] is used for small 
> sleeps (storage/lmgr/s_lock.c and access/transam/xact.c) - those 
> should possibly be abstracted out (Windows doesn't behave well there 
> anyway, I believe - with 0 FDs I read somewhere it returns immediately 
> regardless of the timeout setting).
>

What is the preferred way to handle these 2 cases?  We could handle them 
with #ifdef'd code inline, or create a new function pg_usleep(), or 
possibly handle it with conditional macros inline. If a new function or 
macro, where should they go?

cheers

andrew



Re: select() for small sleep

От
Tom Lane
Дата:
Andrew Dunstan <andrew@dunslane.net> writes:
> I wrote:
>> There are a couple of other places where [select()] is used for small 
>> sleeps (storage/lmgr/s_lock.c and access/transam/xact.c) -

> What is the preferred way to handle these 2 cases?  We could handle them 
> with #ifdef'd code inline, or create a new function pg_usleep(), or 
> possibly handle it with conditional macros inline. If a new function or 
> macro, where should they go?

I'd go with a new function.  There is no reason to try to "optimize"
this code by putting it inline; if you're trying to delay, another few
nanoseconds to enter a subroutine doesn't matter.

As for where, maybe make a new file in src/port/.  That would make it
relatively easy to use the same function in client-side code if we
needed to.
        regards, tom lane