为什么线程访问全局变量出错?
c++吧
全部回复
仅看楼主
level 9
影圣天 楼主
#include <iostream>
#include <windows.h>
#include <string>
using namespace std;
volatile int i=0;
DWORD Thread(LPVOID lpParam)
{
while(1)
{
i++;
}
}
int main(int argc,char*argv[])
{
HANDLE handle;
handle=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)Thread,0,0,NULL);
char a;
while(cin>>a)
{
cout<<i<<endl;
}
}
[不高兴]
2016年06月22日 07点06分 1
level 13
不正常么
2016年06月22日 08点06分 2
level 1
挺正常呀
2016年06月22日 08点06分 3
level 9
影圣天 楼主
呃😖,大仙快给我理由,小白初学[泪]
2016年06月22日 08点06分 4
level 7
哈哈,很正常啊.你的问题不是线程的问题.而是线程的函数
你仔细想想
while(1)
{
i++;
}
这个语句的意思?会对你输出i有什么影响
2016年06月22日 09点06分 6
i这个变量一直被线程使用,一直在改变,输出是是输出改变时的中间量????[疑问]
2016年06月22日 09点06分
@影圣天 对的,线程在一直增加i的值,你没发现你输出的值一直在增加吗?溢出后就变成负数了
2016年06月22日 09点06分
谢谢😜大神
2016年06月22日 11点06分
level 6
哦豁
2016年06月22日 12点06分 7
嗨喽,学长你好呀😁
2016年06月22日 12点06分
1