Commit | Line | Data |
---|---|---|
1 | #include <pthread.h> | |
2 | #pragma once | |
3 | ||
4 | typedef struct queue_node { | |
5 | int value; | |
6 | struct queue_node* next; | |
7 | } queue_node_t; | |
8 | ||
9 | typedef struct queue { | |
10 | queue_node_t* root; | |
11 | pthread_mutex_t *mx_push, *mx_pop, *mx_valid_root; /* critical funcs are per-instance */ | |
12 | pthread_cond_t *valid_root; | |
13 | } queue_t; | |
14 | ||
15 | void queue_init(queue_t* queue); | |
16 | void queue_clear(queue_t* queue); | |
17 | ||
18 | void queue_add(queue_t* queue, int value); | |
19 | int queue_pop(queue_t* queue); | |
20 | ||
21 |