lots of stuff
[assignments.git] / homework / assgn9 / queue.h
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