Windows多线程基础编程

图片说明

图片说明

为什么线程一每次运行时都会打印出两次i=0的情况呢?

我是新手,请大家帮忙解惑,谢谢

2个回答

代码没有什么问题,是系统和编译器对待时间片的方式不同,你可以试试另外一个编译器,估计又是另外一种结果。

yuyushikuan
H-T-TYSK 有的编译器分配时间片不是很规则,比如说:你的两个线程都启动了,两个线程成为了就绪态,等待时间片。因为电脑是多核处理器,每个核都会发布时间片(先这么形象的理解,真实情况比较复杂),你的编译器会把两个线程都排到队列里面,等待时间片。但是你的第一个线程被编译器排进了两个队列,第一个队列运行后,第一个线程的i=0情况被打印一遍,第二个队列得到时间片,又被打印了一遍,于是就出现了你的这种情况。
3 年多之前 回复
sxdy_12138
sxdy_12138 我使用VS2010执行就没有这种情况,不太懂
3 年多之前 回复

因为你把i=0放在;两个方法体里面了,你放到外面,成为全局变量

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐