2 han gaara han_gaara 于 2015.06.17 14:45 提问

莫名的线程控制变量bflag 被改变了,

在线程内的某个对象的函数执行后,可函数内并没有改变布尔变量的代码
在线等,bflag 全局变量

5个回答

han_gaara
han_gaara   2015.06.17 16:47
已采纳

总结下,这个布尔变量我在一个TimeOut()里面有重新赋值, 没加锁(3楼),在现场函数里sleep()函数执行完时可能给这个函数发消息,会改变值,因为这个函数在其他文件里,查看的时候不够仔细,(如二楼),谢谢伸出援手的

bulusli3
bulusli3   Ds   Rxr 2015.06.17 16:14

检查代码,肯定有地方改变了该值,否则不会有变化,仔细看看。

han_gaara
han_gaara 嗯,怎么给悬赏的?界面上怎么看不到
2 年多之前 回复
frank_20080215
frank_20080215   2015.06.17 16:16

没有使用线程同步机制。如信号量、锁等机制

han_gaara
han_gaara
2 年多之前 回复
ycg514230
ycg514230   Rxr 2015.06.17 15:41

你这个问题的描述太简单了,能不能贴点代码来看看?

han_gaara
han_gaara 怎么分悬赏?
2 年多之前 回复
han_gaara
han_gaara 代码不知道该怎么贴, 跟你细细描述下,bfalg是全局变量,是两个线程函数里的循环结束条件。 不知道什么线程函数里会改变这个变量,实际上函数里根本没把这变量置false的操作。 而且调试的时候,改变bflag的位置还不唯一
2 年多之前 回复
han_gaara
han_gaara   2015.06.17 16:10

代码不知道该怎么贴, 跟你细细描述下,bfalg是全局变量,是两个线程函数里的循环结束条件。 不知道什么线程函数里会改变这个变量,实际上函数里根本没把这变量置false的操作。 而且调试的时候,改变bflag的位置还不唯一

Csdn user default icon
上传中...
上传图片
插入图片