当前位置: 技术问答>linux和unix
多线程共享变量问题
来源: 互联网 发布时间:2016-10-09
本文导语: 我写的一小段代码 #include #include int share = 0; void *thread1() { share = 10 ; printf("thread1 ID is %dn",pthread_self()); printf("thread1 share is %dn",share); pthread_exit(0); // sleep(1); } void *thread2() { p...
我写的一小段代码
为什么结果都是10那?
运行环境为多核linux系统上。
#include
#include
int share = 0;
void *thread1()
{
share = 10 ;
printf("thread1 ID is %dn",pthread_self());
printf("thread1 share is %dn",share);
pthread_exit(0);
// sleep(1);
}
void *thread2()
{
printf("thread2 share is %dn",share);
pthread_exit(0);
// sleep(1);
}
void *thread3()
{
printf("thread3 share is %dn",share);
pthread_exit(0);
// sleep(1);
}
void main()
{
pthread_t th1,th2,th3;
printf("the main thread is runn");
pthread_create(&th1,NULL,thread1,NULL);
pthread_create(&th2,NULL,thread2,NULL);
pthread_create(&th3,NULL,thread3,NULL);
sleep(1);
printf("the main thread is endn");
pthread_exit(0);
}
为什么结果都是10那?
运行环境为多核linux系统上。
|
线程里面的所有变量数据都是依赖主进程的,你线程1改成了10,线程2,3都共享一个变量,当然就会变成10 咯