[root@localhost threads]# cat thread1.c
#include <pthread.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
int num=0; //全局变量
void *thread_function(void *arg)
{
for(num=0; num<20; num++)
{
printf("Thread%d says %d \n",atoi(arg),num);
}
return NULL;
}
void *thread_function2(void *arg)
{
while(num<20)
{
printf("Thread%d says %d \n",atoi(arg),num);
}
return NULL;
}
int main()
{
pthread_t mythread1;
pthread_t mythread2;
char *n1="1";
char *n2="2";
//线程参数
if(pthread_create(&mythread1, NULL, thread_function, n1))
{
printf("error creating thread.");
abort();
}
else
{
printf("create thread %s\n",n1);
}
if(pthread_create(&mythread2, NULL, thread_function2, n2))
{
printf("error creating thread.");
abort();
}
else
{
printf("create thread %s\n",n2);
}
if(pthread_join(mythread1, NULL))
{
printf("error joining thread\n");
abort();
}
else
{
printf("Join thread %s\n",n1);
}
if(pthread_join(mythread2, NULL))
{
printf("error joining thread\n");
abort();
}
else
{
printf("Join thread %s\n",n2);
}
printf("into main thread now\n");
return 0;
}
[root@localhost threads]# gcc thread1.c -o thread1 -lpthread
[root@localhost threads]# ./thread1
create thread 1
Thread1 says 0
Thread1 says 1
Thread1 says 2
Thread1 says 3
Thread1 says 4
Thread1 says 5
Thread1 says 6
Thread1 says 7
Thread1 says 8
Thread1 says 9
Thread1 says 10
Thread1 says 11
Thread1 says 12
Thread1 says 13
Thread1 says 14
Thread1 says 15
Thread1 says 16
Thread1 says 17
Thread1 says 18
Thread1 says 19
create thread 2
Join thread 1
Thread2 says 18
Join thread 2
into main thread now
[root@localhost threads]# ./thread1
create thread 1
create thread 2
Thread1 says 0
Thread1 says 1
Thread1 says 2
Thread1 says 3
Thread1 says 4
Thread1 says 5
Thread1 says 6
Thread1 says 7
Thread1 says 8
Thread1 says 9
Thread1 says 10
Thread1 says 11
Thread1 says 12
Thread1 says 13
Thread1 says 14
Thread1 says 15
Thread1 says 16
Thread1 says 17
Thread1 says 18
Thread1 says 19
Join thread 1
Join thread 2
into main thread now
[root@localhost threads]# ./thread1
create thread 1
create thread 2
Thread1 says 0
Thread1 says 1
Thread1 says 2
Thread1 says 3
Thread1 says 4
Thread1 says 5
Thread1 says 6
Thread1 says 7
Thread1 says 8
Thread1 says 9
Thread1 says 10
Thread1 says 11
Thread1 says 12
Thread1 says 13
Thread1 says 14
Thread1 says 15
Thread1 says 16
Thread1 says 17
Thread1 says 18
Thread1 says 19
Join thread 1
Thread2 says 16
Join thread 2
into main thread now
[root@localhost threads]# ./thread1
create thread 1
create thread 2
Thread1 says 0
Thread1 says 1
Thread1 says 2
Thread1 says 3
Thread1 says 4
Thread1 says 5
Thread1 says 6
Thread1 says 7
Thread1 says 8
Thread1 says 9
Thread1 says 10
Thread1 says 11
Thread1 says 12
Thread1 says 13
Thread1 says 14
Thread1 says 15
Thread1 says 16
Thread1 says 17
Thread1 says 18
Thread1 says 19
Join thread 1
Thread2 says 12
Join thread 2
into main thread now
[root@localhost threads]# ./thread1
create thread 1
create thread 2
Thread1 says 0
Thread1 says 1
Thread1 says 2
Thread1 says 3
Thread1 says 4
Thread1 says 5
Thread1 says 6
Thread1 says 7
Thread1 says 8
Thread1 says 9
Thread1 says 10
Thread1 says 11
Thread1 says 12
Thread1 says 13
Thread1 says 14
Thread1 says 15
Thread1 says 16
Thread1 says 17
Thread1 says 18
Thread1 says 19
Join thread 1
Join thread 2
into main thread now
[root@localhost threads]# ./thread1
create thread 1
Thread1 says 0
Thread1 says 1
Thread1 says 2
Thread1 says 3
Thread1 says 4
Thread1 says 5
Thread1 says 6
Thread1 says 7
Thread1 says 8
Thread1 says 9
Thread1 says 10
Thread1 says 11
Thread1 says 12
Thread1 says 13
Thread1 says 14
Thread1 says 15
Thread1 says 16
Thread1 says 17
Thread1 says 18
Thread1 says 19
create thread 2
Join thread 1
Join thread 2
into main thread now
[root@localhost threads]# ./thread1
create thread 1
create thread 2
Thread1 says 0
Thread1 says 1
Thread1 says 2
Thread1 says 3
Thread1 says 4
Thread1 says 5
Thread1 says 6
Thread1 says 7
Thread1 says 8
Thread1 says 9
Thread1 says 10
Thread1 says 11
Thread1 says 12
Thread1 says 13
Thread1 says 14
Thread1 says 15
Thread1 says 16
Thread1 says 17
Thread1 says 18
Thread1 says 19
Join thread 1
Join thread 2
into main thread now
[root@localhost threads]# ./thread1
create thread 1
Thread1 says 0
Thread1 says 1
Thread1 says 2
Thread1 says 3
Thread1 says 4
Thread1 says 5
Thread1 says 6
Thread1 says 7
Thread1 says 8
Thread1 says 9
Thread1 says 10
Thread1 says 11
Thread1 says 12
Thread1 says 13
Thread1 says 14
Thread1 says 15
Thread1 says 16
Thread1 says 17
Thread1 says 18
Thread1 says 19
create thread 2
Join thread 1
Join thread 2
into main thread now
[root@localhost threads]#