X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/b038e440a032e59794529a89c676f5bd37e135b6..43cfff77113704360f4d55b40e890c65a09d8059:/include/xbt/queue.h diff --git a/include/xbt/queue.h b/include/xbt/queue.h index 136ac0411b..ab918ffb70 100644 --- a/include/xbt/queue.h +++ b/include/xbt/queue.h @@ -1,9 +1,8 @@ -/* $Id$ */ - /* 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-2011, 2013-2014. 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. */ @@ -11,44 +10,51 @@ #ifndef _XBT_QUEUE_H #define _XBT_QUEUE_H -#include "xbt/misc.h" /* SG_BEGIN_DECL */ +#include "xbt/misc.h" /* SG_BEGIN_DECL */ /* #include "xbt/function_types.h" */ 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 synchronization of this implementation is done within the SimGrid + * realm, switching between SimGrid processes. * * 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(void) xbt_queue_free(xbt_queue_t *queue); +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); +XBT_PUBLIC(unsigned long) xbt_queue_length(const xbt_queue_t queue); - XBT_PUBLIC(void) xbt_queue_push (xbt_queue_t queue, const void *src); - XBT_PUBLIC(void) xbt_queue_pop (xbt_queue_t queue, void *const dst); - XBT_PUBLIC(void) xbt_queue_unshift (xbt_queue_t queue, const void *src); - XBT_PUBLIC(void) xbt_queue_shift (xbt_queue_t queue, void *const dst); +XBT_PUBLIC(void) xbt_queue_push(xbt_queue_t queue, const void *src); +XBT_PUBLIC(void) xbt_queue_pop(xbt_queue_t queue, void *const dst); +XBT_PUBLIC(void) xbt_queue_unshift(xbt_queue_t queue, const void *src); +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_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, double delay); +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_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, + double delay); /** @} */ SG_END_DECL() - -#endif /* _XBT_QUEUE_H */ +#endif /* _XBT_QUEUE_H */