当前位置: 技术问答>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定义成全局变量再实验一下,看看结果如何。
|
在打印时加上加前的线程号吧
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。