hc
2023-11-06 15ade055295d13f95d49e3d99b09f3bbfb4a43e7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Copyright (C) 1999-2016 Free Software Foundation, Inc.
 
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being "Funding Free Software", the Front-Cover
Texts being (a) (see below), and with the Back-Cover Texts being (b)
(see below).  A copy of the license is included in the section entitled
"GNU Free Documentation License".
 
(a) The FSF's Front-Cover Text is:
 
A GNU Manual
 
(b) The FSF's Back-Cover Text is:
 
You have freedom to copy and modify this GNU Manual, like GNU
     software.  Copies published by the Free Software Foundation raise
     funds for GNU development. -->
<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
<head>
<title>The GNU Fortran Compiler: _gfortran_caf_event_wait</title>
 
<meta name="description" content="The GNU Fortran Compiler: _gfortran_caf_event_wait">
<meta name="keywords" content="The GNU Fortran Compiler: _gfortran_caf_event_wait">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Function-ABI-Documentation.html#Function-ABI-Documentation" rel="up" title="Function ABI Documentation">
<link href="_005fgfortran_005fcaf_005fevent_005fquery.html#g_t_005fgfortran_005fcaf_005fevent_005fquery" rel="next" title="_gfortran_caf_event_query">
<link href="_005fgfortran_005fcaf_005fevent_005fpost.html#g_t_005fgfortran_005fcaf_005fevent_005fpost" rel="prev" title="_gfortran_caf_event_post">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.indentedblock {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
div.smalllisp {margin-left: 3.2em}
kbd {font-style:oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nocodebreak {white-space:nowrap}
span.nolinebreak {white-space:nowrap}
span.roman {font-family:serif; font-weight:normal}
span.sansserif {font-family:sans-serif; font-weight:normal}
ul.no-bullet {list-style: none}
-->
</style>
 
 
</head>
 
<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<a name="g_t_005fgfortran_005fcaf_005fevent_005fwait"></a>
<div class="header">
<p>
Next: <a href="_005fgfortran_005fcaf_005fevent_005fquery.html#g_t_005fgfortran_005fcaf_005fevent_005fquery" accesskey="n" rel="next">_gfortran_caf_event_query</a>, Previous: <a href="_005fgfortran_005fcaf_005fevent_005fpost.html#g_t_005fgfortran_005fcaf_005fevent_005fpost" accesskey="p" rel="prev">_gfortran_caf_event_post</a>, Up: <a href="Function-ABI-Documentation.html#Function-ABI-Documentation" accesskey="u" rel="up">Function ABI Documentation</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="g_t_005fgfortran_005fcaf_005fevent_005fwait-_002d_002d_002d-Wait-that-an-event-occurred"></a>
<h4 class="subsection">8.2.13 <code>_gfortran_caf_event_wait</code> &mdash; Wait that an event occurred</h4>
<a name="index-Coarray_002c-_005fgfortran_005fcaf_005fevent_005fwait"></a>
 
<dl compact="compact">
<dt><em>Description</em>:</dt>
<dd><p>Wait until the event count has reached at least the specified
<var>until_count</var>; if so, atomically decrement the event variable by this
amount and return.
</p>
</dd>
<dt><em>Syntax</em>:</dt>
<dd><p><code>void _gfortran_caf_event_wait (caf_token_t token, size_t index,
int until_count, int *stat, char *errmsg, int errmsg_len)</code>
</p>
</dd>
<dt><em>Arguments</em>:</dt>
<dd><table>
<tr><td width="15%"><var>token</var></td><td width="70%">intent(in) An opaque pointer identifying the coarray.</td></tr>
<tr><td width="15%"><var>index</var></td><td width="70%">Array index; first array index is 0. For scalars, it is
always 0.</td></tr>
<tr><td width="15%"><var>until_count</var></td><td width="70%">The number of events which have to be available
before the function returns.</td></tr>
<tr><td width="15%"><var>stat</var></td><td width="70%">intent(out) Stores the STAT=; may be NULL</td></tr>
<tr><td width="15%"><var>errmsg</var></td><td width="70%">intent(out) When an error occurs, this will be set to
an error message; may be NULL</td></tr>
<tr><td width="15%"><var>errmsg_len</var></td><td width="70%">the buffer size of errmsg.</td></tr>
</table>
 
</dd>
<dt><em>NOTES</em></dt>
<dd><p>This function only operates on a local coarray. It acts like a loop checking
atomically the value of the event variable, breaking if the value is greater
or equal the requested number of counts. Before the function returns, the
event variable has to be decremented by the requested <var>until_count</var> value.
A possible implementation would be a busy loop for a certain number of spins
(possibly depending on the number of threads relative to the number of available
cores) followed by other waiting strategy such as a sleeping wait (possibly with
an increasing number of sleep time) or, if possible, a futex wait.
</p>
<p>The statement is an image-control statement but does not imply sync memory.
Still, all preceeding push communications to this image of images having
issued a <code>event_push</code> have to be completed before this function returns.
</p></dd>
</dl>
 
 
 
<hr>
<div class="header">
<p>
Next: <a href="_005fgfortran_005fcaf_005fevent_005fquery.html#g_t_005fgfortran_005fcaf_005fevent_005fquery" accesskey="n" rel="next">_gfortran_caf_event_query</a>, Previous: <a href="_005fgfortran_005fcaf_005fevent_005fpost.html#g_t_005fgfortran_005fcaf_005fevent_005fpost" accesskey="p" rel="prev">_gfortran_caf_event_post</a>, Up: <a href="Function-ABI-Documentation.html#Function-ABI-Documentation" accesskey="u" rel="up">Function ABI Documentation</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
</div>
 
 
 
</body>
</html>