PostgreSQL Source Code
git master
Loading...
Searching...
No Matches
pgsleep.c
Go to the documentation of this file.
1
/*-------------------------------------------------------------------------
2
*
3
* pgsleep.c
4
* Portable delay handling.
5
*
6
*
7
* Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group
8
*
9
* src/port/pgsleep.c
10
*
11
*-------------------------------------------------------------------------
12
*/
13
#include "
c.h
"
14
15
#include <
time.h
>
16
17
/*
18
* In a Windows backend, we don't use this implementation, but rather
19
* the signal-aware version in src/backend/port/win32/signal.c.
20
*/
21
#if defined(FRONTEND) || !defined(WIN32)
22
23
/*
24
* pg_usleep --- delay the specified number of microseconds.
25
*
26
* NOTE: Although the delay is specified in microseconds, older Unixen and
27
* Windows use periodic kernel ticks to wake up, which might increase the delay
28
* time significantly. We've observed delay increases as large as 20
29
* milliseconds on supported platforms.
30
*
31
* On machines where "long" is 32 bits, the maximum delay is ~2000 seconds.
32
*
33
* CAUTION: It's not a good idea to use long sleeps in the backend. They will
34
* silently return early if a signal is caught, but that doesn't include
35
* latches being set on most OSes, and even signal handlers that set MyLatch
36
* might happen to run before the sleep begins, allowing the full delay.
37
* Better practice is to use WaitLatch() with a timeout, so that backends
38
* respond to latches and signals promptly.
39
*/
40
void
41
pg_usleep
(
long
microsec
)
42
{
43
if
(
microsec
> 0)
44
{
45
#ifndef WIN32
46
struct
timespec
delay
;
47
48
delay
.tv_sec =
microsec
/ 1000000L;
49
delay
.tv_nsec = (
microsec
% 1000000L) * 1000;
50
(
void
)
nanosleep
(&
delay
,
NULL
);
51
#else
52
SleepEx
((
microsec
< 500 ? 1 : (
microsec
+ 500) / 1000),
FALSE
);
53
#endif
54
}
55
}
56
57
#endif
/* defined(FRONTEND) || !defined(WIN32) */
c.h
pg_usleep
void pg_usleep(long microsec)
Definition
pgsleep.c:41
fb
static int fb(int x)
Definition
preproc-init.c:92
time.h
src
port
pgsleep.c
Generated on Sun Feb 1 2026 12:13:17 for PostgreSQL Source Code by
1.9.8