C代码示例:gcc example.c -lpthread;
#include <stdio.h> #include <pthread.h> void* thread(int r) { int i; for(i=0;i<3;i++) printf("This is a pthread %d.\n",r); } int main(void) { pthread_t id1; pthread_t id2; pthread_t id3; pthread_t id4; int i,ret; int one=1; int two=2; int three=3; int four=4; ret=pthread_create(&id1,NULL, (void*)thread,one); ret=pthread_create(&id1,NULL, (void*)thread,two); ret=pthread_create(&id1,NULL, (void*)thread,three); ret=pthread_create(&id1,NULL, (void*)thread,four); if(ret!=0){ printf ("Create pthread error!\n"); return 1; } for(i=0;i<3;i++) printf("This is the main process.\n"); pthread_join(id1,NULL); pthread_join(id2,NULL); pthread_join(id3,NULL); pthread_join(id4,NULL); return 0; }
C++代码示例:g++ example.cc -lpthread
#include <stdio.h>
#include <pthread.h>
extern "C" void* thread(void * r)
{
int i;
for(i=0;i<3;i++)
printf("This is a pthread %d.\n",*(int*)r);
}
int main(void)
{
pthread_t id1;
pthread_t id2;
pthread_t id3;
pthread_t id4;
int i,ret;
int one=1;
int two=2;
int three=3;
int four=4;
ret=pthread_create(&id1,NULL, thread,(void*)&one);
ret=pthread_create(&id1,NULL, thread,(void*)&two);
ret=pthread_create(&id1,NULL, thread,(void*)&three);
ret=pthread_create(&id1,NULL, thread,(void*)&four);
if(ret!=0){
printf ("Create pthread error!\n");
return 1;
}
for(i=0;i<3;i++)
printf("This is the main process.\n");
pthread_join(id1,NULL);
pthread_join(id2,NULL);
pthread_join(id3,NULL);
pthread_join(id4,NULL);
return 0;
}
注意thread和pthread_create的参数类型转换,以及extern “C”