作者:包千卿_413 | 来源:互联网 | 2017-11-03 07:45
linux多线程 形参是否共享?
这是我编写的多线程程序,我知道在多线程中,程序的全局变量是共享的,但是我不能确定局部变量,也就是说线程函数中的变量的改变,是否影响其他的线程局部变量?这是我的程序源代码:
#include
#include
#include
#include
void *create1(void *arg )
{
int i=0;
int *num;
num=(int *)arg;
for(i=0;i<6;i++)
{
printf("This is a pthread1. i=%d ,attr=%d\n",i,*num);
sleep(1);
}
}
int main(int argc ,char *argv[])
{
pthread_t id1,id2;
int error;
int test1=1;
int *attr1=&test1;
int test2=2;
int *attr2=&test2;
error=pthread_create(&id1,NULL,create1,(void *)attr1);
error=pthread_create(&id2,NULL,create1,(void *)attr2);
printf("pthread_create is created is created ... \r\n");
pthread_join(id1,NULL);
pthread_join(id2,NULL);
exit(0);
}
试验的结果是:
This is a pthread1 i=0 , attr=1
This is a pthread1 i=0 , attr=2
//间隔一秒
This is a pthread1 i=1 , attr=1
This is a pthread1 i=1 , attr=2
//间隔一秒
This is a pthread1 i=2 , attr=1
This is a pthread1 i=2 , attr=2
//间隔一秒
This is a pthread1 i=3 , attr=1
This is a pthread1 i=3 , attr=2
//间隔一秒
This is a pthread1 i=4 , attr=1
This is a pthread1 i=4 , attr=2
//间隔一秒
This is a pthread1 i=5 , attr=1
This is a pthread1 i=5 , attr=2
//间隔一秒