Release ordering is required so that groupAwait's acquire load sees this increment.
Without release, on weak memory architectures, groupAwait could see num_running == 0 and return early.
Release ordering is required so that `groupAwait`'s acquire load sees this increment.
Without `release`, on weak memory architectures, `groupAwait` could see `num_running == 0` and return early.