#include #include #include #include #include #include static void wait_thread(void) { time_t start_time = time(NULL); while (time(NULL) == start_time) { /* do nothing except chew CPU slices for up to one second. */ usleep(10000); //~ struct timespec ts; //~ ts.tv_sec = 0; //~ ts.tv_nsec = 1000; //~ nanosleep((const struct timespec *)&ts, NULL); } } static void *thread_func(void *vptr_args) { int i; for (i = 0; i < 10; i++) { fputs(" b\n", stderr); wait_thread(); } return NULL; } int main(void) { int i; pthread_t thread; if (pthread_create(&thread, NULL, thread_func, NULL) != 0) { return EXIT_FAILURE; } for (i = 0; i < 10; i++) { puts("a"); wait_thread(); } if (pthread_join(thread, NULL) != 0) { return EXIT_FAILURE; } return EXIT_SUCCESS; }