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”
本文提供了使用GCC和C++创建和管理多线程的示例代码,包括创建线程、参数传递及主线程与子线程间的交互。
1882

被折叠的 条评论
为什么被折叠?



