SimGrid  3.12
Versatile Simulation of Distributed Systems
Explicit Synchronization Functions

This section describes several explicit synchronization mechanisms existing in MSG: semaphores (msg_sem_t) and friends. More...

Macros

#define MSG_BARRIER_SERIAL_PROCESS
 Opaque type representing a barrier identifier.
 

Typedefs

typedef struct s_smx_sem * msg_sem_t
 Opaque type representing a semaphore.
 

Functions

msg_sem_t MSG_sem_init (int initial_value)
 creates a semaphore object of the given initial capacity
 
void MSG_sem_acquire (msg_sem_t sem)
 locks on a semaphore object
 
msg_error_t MSG_sem_acquire_timeout (msg_sem_t sem, double timeout)
 locks on a semaphore object up until the provided timeout expires
 
void MSG_sem_release (msg_sem_t sem)
 releases the semaphore object
 
int MSG_sem_would_block (msg_sem_t sem)
 returns a boolean indicating if this semaphore would block at this very specific time More...
 
msg_bar_t MSG_barrier_init (unsigned int count)
 Initializes a barrier, with count elements.
 
void MSG_barrier_destroy (msg_bar_t bar)
 Initializes a barrier, with count elements.
 
int MSG_barrier_wait (msg_bar_t bar)
 Performs a barrier already initialized.
 

Detailed Description

This section describes several explicit synchronization mechanisms existing in MSG: semaphores (msg_sem_t) and friends.

In some situations, these things are very helpful to synchronize processes without message exchanges.

Function Documentation

int MSG_sem_would_block ( msg_sem_t  sem)

returns a boolean indicating if this semaphore would block at this very specific time

Note that the returned value may be wrong right after the function call, when you try to use it... But that's a classical semaphore issue, and SimGrid's semaphore are not different to usual ones here.