X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/4a201b7ceece70d2bc461ac48c8b746a36d07243..7938bb9fbff9b2cbada8e410ba196689584180c0:/include/xbt/queue.h diff --git a/include/xbt/queue.h b/include/xbt/queue.h index aede6cc027..3b83e7f99c 100644 --- a/include/xbt/queue.h +++ b/include/xbt/queue.h @@ -1,7 +1,8 @@ /* A (synchronized) message queue. */ /* Popping an empty queue is blocking, as well as pushing a full one */ -/* Copyright (c) 2007 Martin Quinson. All rights reserved. */ +/* Copyright (c) 2007, 2009, 2010. The SimGrid Team. + * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -15,21 +16,30 @@ SG_BEGIN_DECL() /** @addtogroup XBT_queue - * @brief Synchronized message exchanging queue. + * \brief Synchronized message exchanging queue. * - * These is the classical producer/consumer synchronization scheme, which all concurrent programmer recode one day or another. + * These is the classical producer/consumer synchronization scheme, + * which all concurrent programmer recode one day or another. + * + * The good thing of this implementation is that it works seamlessly + * in your universe. When using one of the classical simulation + * interface (such as MSG), it achieves the synchronization on top + * of the simulator. If you use instead the real life implementation + * comming with GRAS, it uses the synchronization of your OS + * (whatever could it be). The choice is done at link time. * * For performance concerns, the content of queue must be homogeneous, - * just like dynars (see the \ref XBT_dynar section). Indeed, queues use a + * just like dynars (see the \ref XBT_dynar section). Actually, queues use a * dynar to store the data, and add the synchronization on top of it. * * @{ */ /** \brief Queue data type (opaque type) */ - typedef struct s_xbt_queue_ *xbt_queue_t; +typedef struct s_xbt_queue_ *xbt_queue_t; -XBT_PUBLIC(xbt_queue_t) xbt_queue_new(int capacity, unsigned long elm_size); +XBT_PUBLIC(xbt_queue_t) xbt_queue_new(int capacity, + unsigned long elm_size); XBT_PUBLIC(void) xbt_queue_free(xbt_queue_t * queue); XBT_PUBLIC(unsigned long) xbt_queue_length(const xbt_queue_t queue); @@ -41,8 +51,8 @@ XBT_PUBLIC(void) xbt_queue_shift(xbt_queue_t queue, void *const dst); XBT_PUBLIC(void) xbt_queue_push_timed(xbt_queue_t queue, const void *src, double delay); -XBT_PUBLIC(void) xbt_queue_unshift_timed(xbt_queue_t queue, const void *src, - double delay); +XBT_PUBLIC(void) xbt_queue_unshift_timed(xbt_queue_t queue, + const void *src, double delay); XBT_PUBLIC(void) xbt_queue_shift_timed(xbt_queue_t queue, void *const dst, double delay); XBT_PUBLIC(void) xbt_queue_pop_timed(xbt_queue_t queue, void *const dst, @@ -51,4 +61,4 @@ XBT_PUBLIC(void) xbt_queue_pop_timed(xbt_queue_t queue, void *const dst, /** @} */ SG_END_DECL() -#endif /* _XBT_QUEUE_H */ +#endif /* _XBT_QUEUE_H */