Next: , Previous: _gfortran_caf_event_post, Up: Function ABI Documentation

8.2.13 _gfortran_caf_event_wait — Wait that an event occurred

Wait until the event count has reached at least the specified until_count; if so, atomically decrement the event variable by this amount and return.
void _gfortran_caf_event_wait (caf_token_t token, size_t index, int until_count, int *stat, char *errmsg, int errmsg_len)

token intent(in) An opaque pointer identifying the coarray.
index Array index; first array index is 0. For scalars, it is always 0.
until_count The number of events which have to be available before the function returns.
stat intent(out) Stores the STAT=; may be NULL
errmsg intent(out) When an error occurs, this will be set to an error message; may be NULL
errmsg_len the buffer size of errmsg.

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 until_count 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.

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 event_push have to be completed before this function returns.