#include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <string.h> #include <pthread.h> void *thread_function(void *arg); char message[] = "Hello world! "; int main() { int res; pthread_t a_thread; void *thread_result; res = pthread_create(&a_thread, NULL, thread_function, (void *)message); if(res != 0) { perror("Thread creation failed"); exit(EXIT_FAILURE); } printf("Waiting for thread to finish... "); res = pthread_join(a_thread, &thread_result); if(res != 0) { perror("Thread join failed"); exit(EXIT_FAILURE); } printf("Thread joined, it returned %s ", (char*)thread_result); printf("Message is now %s ", message); exit(EXIT_SUCCESS); } void *thread_function(void *arg) { printf("Thread function is running, argument is %s ", (char*)arg); sleep(3); strcpy(message, "Bye~"); pthread_exit("Thank you for CPU time~"); }
编译命令: gcc -o pthread1 thread1.c -lpthread