代码如下:
<pre name="code" class="cpp">#include <stdio.h>
#include <pthread.h>
#include <string.h>
#include <stdlib.h>
void *thread_function(void *arg);
char message[] = "Hello World";
int main()
{
pthread_t a_thread;
int res;
void *thread_result;
res = pthread_create(&a_thread, NULL, thread_function, (void *)message);
if(res != 0)
{
fprintf(stderr, "Thread creation failed!");
exit(1);
}
for(int i = 0; i < 10; i++)
{
printf("%d\n", i);
}
printf("Waiting for thread to finish...\n");
res = pthread_join(a_thread, &thread_result);
if(res != 0)
{
fprintf(stderr, "Thread join failed!\n");
exit(1);
}
printf("Thread joined, it returned %s\n", thread_result);
printf("Message is now %s\n", message);
return 0;
}
void *thread_function(void *arg)
{
printf("thread_function is running. Argument was %s\n", (char *)arg);
//sleep(3);
strcpy(message, "Bye!Leo!");
pthread_exit("Thank you for your CPU time!");
}
GCC编译: gcc thread.c -o hello -lpthread
运行结果:
再次运行
多次运行,主线程会与子线程争夺CPU,导致