view src/examples/boundedBuffer/consumer.cbc @ 590:9146d6017f18 default tip

hg mv parallel_execution/* ..
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Thu, 16 Jan 2020 15:12:06 +0900
parents src/parallel_execution/examples/boundedBuffer/consumer.cbc@62166b0e0c7e
children
line wrap: on
line source

#include "../../../context.h"
#include <stdio.h>
#interface "Buffer.h"

__code consumer(struct Buffer* buffer, struct Integer* length, __code next(...), struct LoopCounter* loopCounter) {
    int i = loopCounter->i;
    if (i < length->value) {
        loopCounter->i++;
        goto buffer->take(consumer1);
    }
    goto next(...);
}

__code consumer1(struct Buffer* buffer, struct Integer* length, __code next(...), struct Node* node) {
    printf("getData %d\n", node->value->Integer.value);
    goto consumer();
}

__code consumer1_stub(struct Context* context) {
    goto consumer1(context,
                   &context->data[context->idg]->Buffer,
                   &context->data[context->idg+1]->Integer,
                   context->next,
                   &Gearef(context, Buffer)->data->Node);
}