The GNU Fortran Compiler: _gfortran_caf_event_wait

Next: _gfortran_caf_event_query, Previous: _gfortran_caf_event_post, Up: Function ABI Documentation [Contents][Index]

#### 8.2.13 `_gfortran_caf_event_wait` — Wait that an event occurred

Description:

  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.

Syntax:

  `void _gfortran_caf_event_wait (caf_token_t token, size_t index, int until_count, int *stat, char *errmsg, int errmsg_len)`

Arguments:

  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.

NOTES

  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.

Next: _gfortran_caf_event_query, Previous: _gfortran_caf_event_post, Up: Function ABI Documentation [Contents][Index]