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;
}
Exemple #2
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;
}