#ifndef _DRAGONSTD_QUEUE_H_ #define _DRAGONSTD_QUEUE_H_ #include #include #include #include "list.h" typedef struct { atomic_bool cancel; List list; pthread_cond_t cv; pthread_mutex_t mtx; } Queue; Queue *queue_create(); void queue_delete(Queue *queue); void queue_enqueue(Queue *queue, void *elem); void *queue_dequeue(Queue *queue); void *queue_dequeue_callback(Queue *queue, void (*callback)(void *elem)); void queue_cancel(Queue *queue); #endif