// A small demo program for pthread_create and pthread_join #include #include using namespace std; extern "C" void* do_something(void* arg) { int number = *((int*) arg); cout << "Thread " << number << " does something." << endl; return arg; } // do_something int main() { const int THREADS = 10; pthread_t thread[THREADS]; int args[THREADS]; for (int i = 0; i < THREADS; ++i) { args[i] = i; if (pthread_create(&thread[i], 0, do_something, &args[i])) { cerr << "pthread_create failed, aborting!\n" << endl; exit(1); } cout << "Thread " << i << " started." << endl; } cout << "Now we are waiting for all to finish:" << endl; for (int i = 0; i < THREADS; ++i) { int* resultp; if (pthread_join(thread[i], (void**) &resultp)) { cerr << "pthread_join failed, aborting!\n" << endl; exit(1); } cout << "Thread " << i << " finished. Got " << *resultp << " as return value." << endl; } } // main