Пример #1
0
int main (int argc, char ** argv) {
    printf("Call Init\n");
    hclib_launch(entrypoint, NULL);
    printf("Check results: ");
    assert_done(0, NB_ASYNC);
    printf("OK\n");
    return 0;
}
Пример #2
0
int main (int argc, char ** argv) {
    printf("Call Init\n");
    char const *deps[] = { "system" };
    hclib_launch(entrypoint, NULL, deps, 1);
    printf("Check results: ");
    assert_done(0, NB_ASYNC);
    printf("OK\n");
    return 0;
}
Пример #3
0
void spawn_async(volatile int * indices, int i) {
    if (i < NB_ASYNC) {
        hclib_start_finish();

        indices[i] = i;
        hclib_async(async_fct, (void*) (indices+i), NO_FUTURE, NO_PHASER,
                ANY_PLACE, NO_PROP);
        spawn_async(indices, i+1);

        hclib_end_finish();
        assert_done(i, i+1);
    }
}
Пример #4
0
int main (int argc, char ** argv) {
    printf("Call Init\n");
    int mid = NB_ASYNC/2;
    hclib::launch([&mid]() {
        int i = 0;
        int indices [NB_ASYNC];

        hclib::finish([=, &i, &indices]() {

            // This is ok to have these on stack because this
            // code is alive until the end of the program.
            init_ran(ran, NB_ASYNC);
            printf("Go over [%d:%d]\n", i, mid);
            while(i < mid) {
                indices[i] = i;
                hclib::async([=]() { int index = indices[i];
                    assert(ran[index] == -1); ran[index] = index; });
                i++;
            }
        });

        printf("Midway\n");
        assert_done(0, mid);
        printf("Go over [%d:%d]\n", i, NB_ASYNC);
        while(i < NB_ASYNC) {
            indices[i] = i;
            //Note: Forcefully pass the address we want to write to as a void **
            hclib::async([=]() { int index = indices[i];
                assert(ran[index] == -1); ran[index] = index; });
            i++;
        }
    });
    printf("Check results: ");
    assert_done(mid, NB_ASYNC);
    printf("OK\n");
    return 0;
}