]> git.saurik.com Git - apple/libdispatch.git/blame_incremental - man/dispatch_time.3
libdispatch-913.30.4.tar.gz
[apple/libdispatch.git] / man / dispatch_time.3
... / ...
CommitLineData
1.\" Copyright (c) 2008-2013 Apple Inc. All rights reserved.
2.Dd May 1, 2009
3.Dt dispatch_time 3
4.Os Darwin
5.Sh NAME
6.Nm dispatch_time ,
7.Nm dispatch_walltime
8.Nd Calculate temporal milestones
9.Sh SYNOPSIS
10.Fd #include <dispatch/dispatch.h>
11.Vt static const dispatch_time_t DISPATCH_TIME_NOW = 0ull ;
12.Vt static const dispatch_time_t DISPATCH_TIME_FOREVER = ~0ull ;
13.Ft dispatch_time_t
14.Fo dispatch_time
15.Fa "dispatch_time_t base" "int64_t offset"
16.Fc
17.Ft dispatch_time_t
18.Fo dispatch_walltime
19.Fa "struct timespec *base" "int64_t offset"
20.Fc
21.Sh DESCRIPTION
22The
23.Fn dispatch_time
24and
25.Fn dispatch_walltime
26functions provide a simple mechanism for expressing temporal milestones for use
27with dispatch functions that need timeouts or operate on a schedule.
28.Pp
29The
30.Fa dispatch_time_t
31type is a semi-opaque integer, with only the special values
32.Vt DISPATCH_TIME_NOW
33and
34.Vt DISPATCH_TIME_FOREVER
35being externally defined. All other values are represented using an internal
36format that is not safe for integer arithmetic or comparison.
37The internal format is subject to change.
38.Pp
39The
40.Fn dispatch_time
41function returns a milestone relative to an existing milestone after adding
42.Fa offset
43nanoseconds.
44If the
45.Fa base
46parameter maps internally to a wall clock, then the returned value is
47relative to the wall clock.
48Otherwise, if
49.Fa base
50is
51.Vt DISPATCH_TIME_NOW ,
52then the current time of the default host clock is used.
53.Pp
54The
55.Fn dispatch_walltime
56function is useful for creating a milestone relative to a fixed point in time
57using the wall clock, as specified by the optional
58.Fa base
59parameter. If
60.Fa base
61is NULL, then the current time of the wall clock is used.
62.Sh EDGE CONDITIONS
63The
64.Fn dispatch_time
65and
66.Fn dispatch_walltime
67functions detect overflow and underflow conditions when applying the
68.Fa offset
69parameter.
70.Pp
71Overflow causes
72.Vt DISPATCH_TIME_FOREVER
73to be returned. When
74.Fa base
75is
76.Vt DISPATCH_TIME_FOREVER ,
77then the
78.Fa offset
79parameter is ignored.
80.Pp
81Underflow causes the smallest representable value to be
82returned for a given clock.
83.Sh EXAMPLES
84Create a milestone two seconds in the future:
85.Bd -literal -offset indent
86milestone = dispatch_time(DISPATCH_TIME_NOW, 2 * NSEC_PER_SEC);
87.Ed
88.Pp
89Create a milestone for use as an infinite timeout:
90.Bd -literal -offset indent
91milestone = DISPATCH_TIME_FOREVER;
92.Ed
93.Pp
94Create a milestone on Tuesday, January 19, 2038:
95.Bd -literal -offset indent
96struct timespec ts;
97ts.tv_sec = 0x7FFFFFFF;
98ts.tv_nsec = 0;
99milestone = dispatch_walltime(&ts, 0);
100.Ed
101.Pp
102Use a negative delta to create a milestone an hour before the one above:
103.Bd -literal -offset indent
104milestone = dispatch_walltime(&ts, -60 * 60 * NSEC_PER_SEC);
105.Ed
106.Sh RETURN VALUE
107These functions return an abstract value for use with
108.Fn dispatch_after ,
109.Fn dispatch_group_wait ,
110.Fn dispatch_semaphore_wait ,
111or
112.Fn dispatch_source_set_timer .
113.Sh SEE ALSO
114.Xr dispatch 3 ,
115.Xr dispatch_after 3 ,
116.Xr dispatch_group_create 3 ,
117.Xr dispatch_semaphore_create 3