#include "lib/controller.h" #include "lib/common.h" typedef struct { int id; char* task; size_t task_size; } task_t; task_t* tasks; const size_t TASKS = 40; const long double A = -10000000; const long double B = +10000000; const long double EPS = 1e-6; void divide_and_yield_tasks() { tasks = calloc(TASKS, sizeof(*tasks)); long double delta = (B - A) / TASKS; for (size_t i = 0; i < TASKS; i++) { tasks[i].task = calloc(3, sizeof(long double)); long double* args = (long double*) tasks[i].task; args[0] = A + delta * i; args[1] = A + delta * (i + 1); args[2] = EPS; tasks[i].task_size = 3 * sizeof(long double); tasks[i].id = controller_yield_task(tasks[i].task, tasks[i].task_size); printf("%d task id\n", tasks[i].id); } } void combine_results_and_print() { long double sum = 0; size_t cnt = 0; while (cnt < TASKS) { const char* res; size_t sz; printf("%lu taskid %d -> ", cnt, controller_get_result(&res, &sz)); if (sz == 0) { printf("fuck\n"); break; } const long double* resp = (const long double*) res; printf("%.10Lf\n", *resp); sum += *resp; cnt++; } printf("%.10Lf\n", sum); } int32_t main() { controller_init("127.0.0.1", "33554", 1, 4); configure_timeout(100); controller_start(); divide_and_yield_tasks(); controller_wait(); combine_results_and_print(); printf("expected:\n313064450.892857\n"); controller_finish(); return 0; }