|
SimGrid 3.6.2
Scalable simulation of distributed systems
|
Synchronized message exchanging queue. More...
Typedefs | |
| typedef struct s_xbt_queue_ * | xbt_queue_t |
| Queue data type (opaque type) | |
Functions | |
| xbt_queue_t | xbt_queue_new (int capacity, unsigned long elm_size) |
| Create a new message exchange queue. | |
| void | xbt_queue_free (xbt_queue_t *queue) |
| Destroy a message exchange queue. | |
| unsigned long | xbt_queue_length (const xbt_queue_t queue) |
| Get the queue size. | |
| void | xbt_queue_push (xbt_queue_t queue, const void *src) |
| Push something to the message exchange queue. | |
| void | xbt_queue_pop (xbt_queue_t queue, void *const dst) |
| Pop something from the message exchange queue. | |
| void | xbt_queue_unshift (xbt_queue_t queue, const void *src) |
| Unshift something to the message exchange queue. | |
| void | xbt_queue_shift (xbt_queue_t queue, void *const dst) |
| Shift something from the message exchange queue. | |
| void | xbt_queue_push_timed (xbt_queue_t queue, const void *src, double delay) |
| Push something to the message exchange queue, with a timeout. | |
| void | xbt_queue_unshift_timed (xbt_queue_t queue, const void *src, double delay) |
| Unshift something to the message exchange queue, with a timeout. | |
| void | xbt_queue_shift_timed (xbt_queue_t queue, void *const dst, double delay) |
| Shift something from the message exchange queue, with a timeout. | |
| void | xbt_queue_pop_timed (xbt_queue_t queue, void *const dst, double delay) |
| Pop something from the message exchange queue, with a timeout. | |
Synchronized message exchanging queue.
These is the classical producer/consumer synchronization scheme, which all concurrent programmer recode one day or another.
For performance concerns, the content of queue must be homogeneous, just like dynars (see the Dynar: generic dynamic array section). Indeed, queues use a dynar to store the data, and add the synchronization on top of it.
| xbt_queue_t xbt_queue_new | ( | int | capacity, |
| unsigned long | elm_size | ||
| ) |
Create a new message exchange queue.
| capacity | the capacity of the queue. If non-nul, any attempt to push an item which would let the size of the queue over this number will be blocking until someone else pop some data |
| elm_size | size of each element stored in it (see xbt_dynar_new) |
| void xbt_queue_free | ( | xbt_queue_t * | queue | ) |
Destroy a message exchange queue.
Any remaining content is leaked.
| void xbt_queue_push | ( | xbt_queue_t | queue, |
| const void * | src | ||
| ) |
Push something to the message exchange queue.
This is blocking if the declared capacity is non-nul, and if this amount is reached.
| void xbt_queue_pop | ( | xbt_queue_t | queue, |
| void *const | dst | ||
| ) |
Pop something from the message exchange queue.
This is blocking if the queue is empty.
| void xbt_queue_unshift | ( | xbt_queue_t | queue, |
| const void * | src | ||
| ) |
Unshift something to the message exchange queue.
This is blocking if the declared capacity is non-nul, and if this amount is reached.
| void xbt_queue_shift | ( | xbt_queue_t | queue, |
| void *const | dst | ||
| ) |
Shift something from the message exchange queue.
This is blocking if the queue is empty.
| void xbt_queue_push_timed | ( | xbt_queue_t | queue, |
| const void * | src, | ||
| double | delay | ||
| ) |
Push something to the message exchange queue, with a timeout.
| void xbt_queue_unshift_timed | ( | xbt_queue_t | queue, |
| const void * | src, | ||
| double | delay | ||
| ) |
Unshift something to the message exchange queue, with a timeout.
| void xbt_queue_shift_timed | ( | xbt_queue_t | queue, |
| void *const | dst, | ||
| double | delay | ||
| ) |
Shift something from the message exchange queue, with a timeout.
| void xbt_queue_pop_timed | ( | xbt_queue_t | queue, |
| void *const | dst, | ||
| double | delay | ||
| ) |
Pop something from the message exchange queue, with a timeout.
| Back to the main Simgrid Documentation page |
The version of Simgrid documented here is v3.6.2. Documentation of other versions can be found in their respective archive files (directory doc/html). |
Generated for SimGridAPI by
|