25 #ifndef UTILS_NBQUEUE_H_ 26 #define UTILS_NBQUEUE_H_ 37 pthread_mutex_t mutex;
40 static inline void nbqueue_init(
struct nbqueue *nbq)
43 pthread_mutex_init(&nbq->mutex, NULL);
48 pthread_mutex_lock(&nbq->mutex);
51 pthread_mutex_unlock(&nbq->mutex);
54 static inline void *nbqueue_deq(
struct nbqueue *nbq)
57 if (nbq->head == NULL) {
61 pthread_mutex_lock(&nbq->mutex);
63 for (el = nbq->head, el_p = NULL; el != NULL && el->next != NULL;
68 assert(el->next == NULL);
78 pthread_mutex_unlock(&nbq->mutex);