当前位置: 技术问答>linux和unix
一个多线程执行问题
来源: 互联网 发布时间:2016-04-10
本文导语: #include void increment(int *i) { (*i)+=1; //加1 } void print(int *i) { printf("%d",*i); //输出 } void* func(void* argv) { increment((int*)argv); p...
#include
void increment(int *i)
{
(*i)+=1; //加1
}
void print(int *i)
{
printf("%d",*i); //输出
}
void* func(void* argv)
{
increment((int*)argv);
print((int*)argv);
}
int main()
{
static int count=0;
pthread_create(...,...,func,&count); //创建第一个线程
printf("%d",count);
pthread_create(...,...,func,&count);//第二个
return 0;
}
主要是想模拟一下多个线程并发运行时对共享变量count的影响,却发现结果为1,0,1. 好像主线程和2个子线程互不影响一样。这是为什么?谢谢
void increment(int *i)
{
(*i)+=1; //加1
}
void print(int *i)
{
printf("%d",*i); //输出
}
void* func(void* argv)
{
increment((int*)argv);
print((int*)argv);
}
int main()
{
static int count=0;
pthread_create(...,...,func,&count); //创建第一个线程
printf("%d",count);
pthread_create(...,...,func,&count);//第二个
return 0;
}
主要是想模拟一下多个线程并发运行时对共享变量count的影响,却发现结果为1,0,1. 好像主线程和2个子线程互不影响一样。这是为什么?谢谢
|
奇怪,将count定义成全局变量再实验一下,看看结果如何。
|
在打印时加上加前的线程号吧