传值:
#include
#include
#include
void thread(int i)
{
int k;
for (k=0;k<10;k++) {
printf("this is %d pthread.\n",i);
}
}
{
int k;
for (k=0;k<10;k++) {
printf("this is %d pthread.\n",i);
}
}
int main(){
pthread_t pthread_id;
int i,ret;
int m=2;
pthread_t pthread_id;
int i,ret;
int m=2;
ret=pthread_create(&pthread_id,NULL,(void *)thread,(void *)m);
if (ret!=0) {
printf("create pthread error!\n");
exit(0);
}
for (i=0;i<10;i++) {
printf("this is 1 pthread.\n");
}
pthread_join(pthread_id,NULL);
return 0;
}
if (ret!=0) {
printf("create pthread error!\n");
exit(0);
}
for (i=0;i<10;i++) {
printf("this is 1 pthread.\n");
}
pthread_join(pthread_id,NULL);
return 0;
}
编译的时候需要加上-lpthread开关:
gcc -o thread_1 thread_1.c
-lpthread
传址
#include
#include
#include
void thread(int *i)
{
int k;
int sum=0;
for (k=1;k<101;k++) {
sum=sum+k;
}
*i=sum;
}
{
int k;
int sum=0;
for (k=1;k<101;k++) {
sum=sum+k;
}
*i=sum;
}
int main(){
pthread_t pthread_id;
int i,ret;
int *m;
int sum=0;
m=(int *)malloc(sizeof(int));
pthread_t pthread_id;
int i,ret;
int *m;
int sum=0;
m=(int *)malloc(sizeof(int));
ret=pthread_create(&pthread_id,NULL,(void *)thread,(void *)&m);
if (ret!=0) {
printf("create pthread error!\n");
exit(0);
}
for (i=0;i<1000000;i++) {
sum=sum+1;
}
printf("main sum =%d\n",sum);
printf("pthread sum =%d\n",m);
if (ret!=0) {
printf("create pthread error!\n");
exit(0);
}
for (i=0;i<1000000;i++) {
sum=sum+1;
}
printf("main sum =%d\n",sum);
printf("pthread sum =%d\n",m);
//free((void *)m);
return 0;
}
}