diff --git a/src/fast_blocked_queue.c b/src/fast_blocked_queue.c index 1d89aab..afe0047 100644 --- a/src/fast_blocked_queue.c +++ b/src/fast_blocked_queue.c @@ -36,6 +36,12 @@ int blocked_queue_init(struct fast_blocked_queue *pQueue) return 0; } +void blocked_queue_destroy(struct fast_blocked_queue *pQueue) +{ + pthread_cond_destroy(&(pQueue->cond)); + pthread_mutex_destroy(&(pQueue->lock)); +} + int blocked_queue_push(struct fast_blocked_queue *pQueue, struct fast_task_info *pTask) { diff --git a/src/fast_blocked_queue.h b/src/fast_blocked_queue.h index e4ef303..d7ce068 100644 --- a/src/fast_blocked_queue.h +++ b/src/fast_blocked_queue.h @@ -31,6 +31,13 @@ extern "C" { #endif int blocked_queue_init(struct fast_blocked_queue *pQueue); +void blocked_queue_destroy(struct fast_blocked_queue *pQueue); + +static inline void blocked_queue_terminate(struct fast_blocked_queue *pQueue) +{ + pthread_cond_signal(&(pQueue->cond)); +} + int blocked_queue_push(struct fast_blocked_queue *pQueue, struct fast_task_info *pTask); struct fast_task_info *blocked_queue_pop(struct fast_blocked_queue *pQueue);