-/** @brief Initializes a barrier, with count elements */
-void MSG_barrier_destroy(msg_bar_t bar) {
- xbt_mutex_destroy(bar->mutex);
- xbt_cond_destroy(bar->cond);
- xbt_free(bar);
-}
-
-/** @brief Performs a barrier already initialized */
-int MSG_barrier_wait(msg_bar_t bar) {
- xbt_mutex_acquire(bar->mutex);
- bar->arrived_processes++;
- XBT_DEBUG("waiting %p %u/%u", bar, bar->arrived_processes, bar->expected_processes);
- if (bar->arrived_processes == bar->expected_processes) {
- xbt_cond_broadcast(bar->cond);
- xbt_mutex_release(bar->mutex);
- bar->arrived_processes = 0;
- return MSG_BARRIER_SERIAL_PROCESS;
- }
-
- xbt_cond_wait(bar->cond, bar->mutex);
- xbt_mutex_release(bar->mutex);
- return 0;
-}