Skip to content
Kostadin Atanasov edited this page May 2, 2013 · 9 revisions

Table of Contents

Headers

Include:

    <libfly/fly.h>

Initialization

int fly_simple_init(int half_nbt);
int fly_uninit();

Parallel for

parallel for required function

typedef void (*fly_parallel_for_func)(int, void*);

parallel for over pointer

int fly_parallel_for(int count, fly_parallel_for_func func, void *ptr);

Logically equivalent to:

    for (int i = 0; i < count; i++)
        func(i, ptr);
parallel for over array elements

int fly_parallel_for_arr(int start, int end, fly_parallel_for_func func, void *arr, size_t elsize);

Given the ideal case that (((end - start) % half_nbt) == 0) logically equivalent to:

    int partition = (end - start) / half_nbt;
    for (int i = 0; i < half_nbt; i++)
        for (int j = 0; j < partition; j++)
            func(j + (i * partition), arr[j + (i *partition)]);

Task pushing

task required function

typedef void *(*fly_task_func)(void*);

creation destruction

struct fly_task *fly_create_task(fly_task_func func, void *param);
void fly_destroy_task(struct fly_task *task);

scheduling

int fly_push_task(struct fly_task *task);
int fly_wait_task(struct fly_task *task);
int fly_wait_tasks(struct fly_task **tasks, int nbtasks);
void *fly_get_task_result(struct fly_task *task);