#include <stdio.h> #include <unistd.h> #include <stdlib.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...\n"); res = pthread_join(a_thread, &thread_result); if (res != 0) { perror("Thread join failed"); exit(EXIT_FAILURE); } printf("Thread joined, it returned %s\n", (char *)thread_result); printf("Message is now %s\n", message); exit(EXIT_SUCCESS); } void *thread_function(void *arg) { printf("thread_function is running. Argument was %s\n", (char *)arg); sleep(3); strcpy(message, "Bye!"); pthread_exit("Thank you for the CPU time"); }
获取nptl版本
getconf GNU_LIBPTHREAD_VERSION
root@localhost:/home/ubuntu/chapter12# find / -name pthread.h
/usr/include/pthread.h
编译:
gcc -D_REENTRANT -I/usr/include/ thread1.c -o thread1 -L/usr/lib -lpthread
附:
Linux 线程模型的比较:LinuxThreads 和 NPTL
http://www.ibm.com/developerworks/cn/linux/l-threading.html