int main(int argc, const char *argv[]) { min_heap *f = min_heap_init(); min_heap_insert(f, 1); min_heap_insert(f, 0); min_heap_insert(f, -1); min_heap_insert(f, -3); min_heap_insert(f, -3); min_heap_insert(f, 3); min_heap_insert(f, -19); int i = 0; for (i = 0; i < f->size; i++) { printf("%d; ", f->cont[i]); } printf("--------%d\n", f->size); while (f->size != 0) { printf("%ld ", min_heap_pull(f)); } printf("%d\n", i); return 0; }
int event_queue_init(void) { cmd_event_t event; event_queue_t * peq = pq; int i; event.level = -100000; event.timestamp = 0; for (i = 0; i < QUEUE_THREADS; i++) { peq = pq + i; memset(peq, 0, sizeof(event_queue_t)); peq->event_slab = smpslab_init(EVENTS_SIZ, sizeof(struct cmd_event)); if (peq->event_slab == NULL) { log_error(LOG_DEBUG, "smpslab_init"); return -1; } peq->heap = min_heap_init(EVENTS_SIZ, &event, sizeof(event), event_cmp); if (peq->heap == NULL) { free(peq->event_slab); log_error(LOG_EMERG, "min_heap_init"); return -1; } peq->queue_no = i; pthread_mutex_init(&peq->lock, NULL); pthread_cond_init(&peq->cond, NULL); } return 0; }