#include #pragma once typedef struct queue_node { int value; struct queue_node* next; } queue_node_t; typedef struct queue { queue_node_t* root; pthread_mutex_t *mx_push, *mx_pop, *mx_valid_root; /* critical funcs are per-instance */ pthread_cond_t *valid_root; } queue_t; void queue_init(queue_t* queue); void queue_clear(queue_t* queue); void queue_add(queue_t* queue, int value); int queue_pop(queue_t* queue);