此demo中进程创建了一批线程,可以看到:
所有线程共享进程ID,但是有自己的线程ID。
创建成功的线程的执行顺序是不确定的。
#include <stdio.h>
#include <pthread.h>
//#include <unistd.h>
void *fn(void *arg)
{
printf("thread #%u : my PID is %d\n", (unsigned int)pthread_self(), getpid());
return NULL;
}
int main(int argc, char *argv[])
{
pthread_t tid;
int error;
int i;
for(i=0; i<10; i++)
{
error = pthread_create( &tid, NULL, fn, NULL);
if(0 != error)
{
perror("pthead_create error");
return -1;
}
else
{
printf("main PID %d : create thread #%u OK!\n", getpid(), (unsigned int)tid);
}
}
sleep(3); /* give threads time to print out */
return 0;
}
执行结果:
main PID 2847 : create thread #3076492096 OK!
main PID 2847 : create thread #3068099392 OK!
main PID 2847 : create thread #3059706688 OK!
main PID 2847 : create thread #3051313984 OK!
main PID 2847 : create thread #3042921280 OK!
main PID 2847 : create thread #3034528576 OK!
thread #3059706688 : my PID is 2847
thread #3051313984 : my PID is 2847
thread #3068099392 : my PID is 2847
thread #3042921280 : my PID is 2847
thread #3076492096 : my PID is 2847
thread #3034528576 : my PID is 2847
main PID 2847 : create thread #3026135872 OK!
main PID 2847 : create thread #3017743168 OK!
main PID 2847 : create thread #3009350464 OK!
main PID 2847 : create thread #3000957760 OK!
thread #3009350464 : my PID is 2847
thread #3017743168 : my PID is 2847
thread #3000957760 : my PID is 2847
thread #3026135872 : my PID is 2847