]> git.lizzy.rs Git - dragonstd.git/blob - queue.h
80b1e5410cbd522e79762d2009fe22fd6b74c9e5
[dragonstd.git] / queue.h
1 #ifndef _DRAGONSTD_QUEUE_H_
2 #define _DRAGONSTD_QUEUE_H_
3
4 #include <pthread.h>
5 #include <stdbool.h>
6 #include <stdatomic.h>
7 #include "list.h"
8
9 typedef struct
10 {
11         atomic_bool cancel;
12         List list;
13         pthread_cond_t cv;
14         pthread_mutex_t mtx;
15 } Queue;
16
17 Queue *queue_create();
18 void queue_delete(Queue *queue);
19 void queue_enqueue(Queue *queue, void *elem);
20 void *queue_dequeue(Queue *queue);
21 void *queue_dequeue_callback(Queue *queue, void (*callback)(void *elem));
22 void queue_cancel(Queue *queue);
23
24 #endif