A very fast kyoto cabinet powered memcache interface http proxy caching server.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

40 lines
919 B

#include "queue.h"
void queue_del(PTR_QUEUE q){
kclistdel(*(&q->list));
pthread_mutex_destroy(&q->mutex);
pthread_cond_destroy(&q->cond);
}
void queue_init(PTR_QUEUE q){
*(&q->list) = kclistnew();
*(&q->size) = 0;
pthread_mutex_init(&q->mutex, NULL);
pthread_cond_init(&q->cond, NULL);
}
void queue_add(PTR_QUEUE q, char* value){
pthread_mutex_lock(&q->mutex);
kclistpush(*(&q->list), value, strlen(value) + 1);
*(&q->size) += 1;
pthread_mutex_unlock(&q->mutex);
pthread_cond_signal(&q->cond);
}
void queue_get(PTR_QUEUE q, char** value){
pthread_mutex_lock(&q->mutex);
while(*(&q->size) == 0){
pthread_cond_wait(&q->cond, &q->mutex);
}
list_shift(*(&q->list), value);
*(&q->size) -= 1;
pthread_mutex_unlock(&q->mutex);
}
int queue_size(PTR_QUEUE q){
int size = 0;
pthread_mutex_lock(&q->mutex);
size = *(&q->size);
pthread_mutex_unlock(&q->mutex);
return size;
}