#include #include /* test pthread create/join/exit */ size_t arr[20]; void* fetch(void* idx){ size_t res = arr[(size_t)idx]; pthread_exit((void*)res); sout | "it should not be here"; exit(1); //return (void*)res; } void arr_init(){ for (int i = 0; i < 20; i++){ arr[i] = i; } } int main() { pthread_t threads[20]; arr_init(); int status; for (size_t i = 0; i < 20; i++){ status = pthread_create(&threads[i], NULL, fetch, (void*)i); if (status != 0) exit(1); } int res = 0; for (int i = 0; i < 20; i++){ void* res_i = NULL; status = pthread_join(threads[i], &res_i); if (status != 0) exit(2); if (((size_t)res_i) != i) exit(3); res += (size_t)res_i; } sout | "final res is" | res; return 0; }