Exemplo n.º 1
0
static struct bthread_info *btree_thread_ui_create(void)
{
    int i;
    struct bthread_info *bi = (struct bthread_info*)calloc(1, sizeof(struct bthread_info));

    assert(bi);

    bi->free_queue = mq_create(MAX_BUF, 1);
    index_init();

    for (i = 0; i < MAX_THREAD; i++) {
        bi->node[i].id    = i;
        bi->node[i].count = 0;
        bi->node[i].eof   = 0;
        bi->node[i].bi    = bi;
        bi->node[i].info_queue = mq_create(MAX_BUF, 0);
        strcpy(bi->node[i].tmpfile, "/tmp/mem_XXXXXX");
        mkstemp(bi->node[i].tmpfile);
        bi->node[i].store = store_open_disk(bi->node[i].tmpfile, sizeof(struct user_info), 102400);
//		bi->node[i].store = store_open_memory(sizeof(struct user_info), 102400);
//		bi->node[i].tree  = avlbtree_new_memory(bi->node[i].store);
        bi->node[i].tree  = sbtree_new_memory(bi->node[i].store);

        pthread_mutex_init(&bi->node[i].mutex, NULL);

        pthread_create(&bi->node[i].thread, NULL, (void *(*)(void*))insert_thread, bi->node + i);
    }

    return bi;
}
Exemplo n.º 2
0
int main(void) {

	struct CArrayIOArgs carray_args;
	struct EncoderArgs encoder_args;
	struct DecoderArgs decoder_args;
	struct HistogramArgs histogram_args;

	// Create mqs for the encoding process
	carray_args.mq_recv = "/decoder_out";
	carray_args.mq_send = "/encoder_in";
	carray_args.data = (unsigned char*)text;
	carray_args.len = text_len;
	
	encoder_args.mq_recv = "/encoder_in";
	encoder_args.mq_send = "/enc2dec";
	encoder_args.mq_histogram_send = "/histogram_in";
	encoder_args.mq_histogram_recv = "/histogram_out";
	
	histogram_args.mq_recv = "/histogram_in";
	histogram_args.mq_send = "/histogram_out";
	
	
	mq_create(encoder_args.mq_send, BLOCK_SIZE);
	mq_create(encoder_args.mq_recv, BLOCK_SIZE);
	mq_create(encoder_args.mq_histogram_send, BLOCK_SIZE);
	mq_create(encoder_args.mq_histogram_recv, BLOCK_SIZE);
	
	// Create mqs for the encoding process
	decoder_args.mq_recv = "/enc2dec";
	decoder_args.mq_send = "/decoder_out";
	
	mq_create(decoder_args.mq_send, BLOCK_SIZE);
	//mq_create(decoder_args.mq_recv, BLOCK_SIZE);

	// Create and join the threads
	mkthread(&encoder_thread, encoder_entry, &encoder_args);
	mkthread(&decoder_thread, decoder_entry, &decoder_args);
	mkthread(&carray_thread, carray_io, &carray_args);
	mkthread(&histogram_thread, histogram_entry, &histogram_args);


	pthread_join(encoder_thread, NULL);
	pthread_join(carray_thread, NULL);
	pthread_join(decoder_thread, NULL);
	pthread_join(histogram_thread, NULL);
	
	return 0;
}
Exemplo n.º 3
0
int main(void)
{
    message_queue *q = mq_create();
    message_node  *n = NULL;
    printf("size should be 0, is %d\n", mq_size(q));
    mq_push_msgz(q, "one");
    mq_push_msgz(q, "two");
    mq_push_msgz(q, "three");
    printf("size should be 3, is %d\n", mq_size(q));
    n = mq_pop(q);
    printf("expecting \"one\", got \"%s\"\n", n->message);
    mn_destroy(n);
    mq_push_msgz(q, "four");
    n = mq_pop(q);
    printf("expecting \"two\", got \"%s\"\n", n->message);
    mn_destroy(n);
    n = mq_pop(q);
    printf("expecting \"three\", got \"%s\"\n", n->message);
    mn_destroy(n);
    printf("size should be 1, is %d\n", mq_size(q));
    n = mq_pop(q);
    printf("expecting \"four\", got \"%s\"\n", n->message);
    mn_destroy(n);
    printf("size should be 0, is %d\n", mq_size(q));
    n = mq_pop(q);
    printf("expecting \"%p\", got \"%p\"\n", NULL, n);
    mq_destroy(q);
    return 0;
}
Exemplo n.º 4
0
int mq_test() {
#define NO_MSG_TEST (100)
    MessageQueue_t *queue = mq_create();
    //Message_t msgs_[NO_MSG_TEST];
    uint16_t i;
    LOG("-----------Message Queue Basic Test------------");

    LOG("Adding %d messages to the queue", NO_MSG_TEST);
    for (i = 0; i < NO_MSG_TEST; i++) {
        LOG(" - queue message %d", i);
        //Message_t *msg = &msgs_[i];
        Message_t *msg = (Message_t*) malloc(sizeof(Message_t));
        mq_queue_message(queue, msg);
    }

    LOG("Having %d messages in the queue:", queue->no_messages);
    for (;queue->no_messages > 0;) {
        Message_t *msg = mq_dequeue_message(queue);
        LOG(" - dequeue message 0x%X", msg);
    }

    LOG("Now we have %d messages, (deque_head==queue_head) = %d\n", queue->no_messages, queue->dequeue_head == queue->queue_head);
    return 1;
}