void thread_func_yield_overhead(void *arg) { ABT_TEST_UNUSED(arg); int i; for (i = 0; i < iter; i++) { } }
void thread_func_yield(void *arg) { ABT_TEST_UNUSED(arg); int i; for (i = 0; i < iter; i++) { ABT_thread_yield(); } }
void fn3(void *args) { ABT_TEST_UNUSED(args); int i = 0; ABT_test_printf(1, "Thread 3 iteration %d signal eventual \n", i); char *data = (char *) malloc(EVENTUAL_SIZE); ABT_eventual_set(myeventual, data, EVENTUAL_SIZE); ABT_test_printf(1, "Thread 3 continue iteration %d \n", i); }
void fn2(void *args) { ABT_TEST_UNUSED(args); int i = 0; void *data = malloc(EVENTUAL_SIZE); ABT_test_printf(1, "Thread 2 iteration %d waiting from eventual\n", i); ABT_eventual_wait(myeventual,&data); ABT_test_printf(1, "Thread 2 continue iteration %d returning from " "eventual\n", i); }
void thread_func_yield_to_overhead(void *arg) { arg_t *my_arg = (arg_t *)arg; int eid = my_arg->eid; int tid = my_arg->tid; int nid = (tid + 1) % num_threads; ABT_thread next = g_threads[eid][nid]; ABT_TEST_UNUSED(next); int i; for (i = 0; i < iter; i++) { } ABT_thread_yield(); }
void thread_func(void *arg) { ABT_TEST_UNUSED(arg); }