使用全局变量进行线程间通信的有关问题
使用全局变量进行线程间通信的问题
在主线程中定义全局变量:char mm[5],在子线程中声明为:extern char mm[5]。主线程中赋值:mm[0]=(char)0xfe,可是在子线程中读出mm[0],但mm[0]!=(char)0xfe,不知什么原因?
------解决方案--------------------
// xx.h
extern char mm[5];
// xx.cpp
#include "xx.h"
char mm[5];
// dlg.cpp
#include "xx.h"
//在任何地方使用mm
------解决方案--------------------
怎么定义的?又怎么声明的?
------解决方案--------------------
可能某个线程更改了你的mm,这个涉及到线程同步问题!!
------解决方案--------------------
mm[0]=(char)0xfe;//什么时候发生的?确定是在子线程读取之前
还有看看其他地方有没有对mm做过修改
------解决方案--------------------
你是不是有局部变量跟全局变量重名了。可以把代码贴出来大家看一下。理论上不会出现你说的这种情况的。
在主线程中定义全局变量:char mm[5],在子线程中声明为:extern char mm[5]。主线程中赋值:mm[0]=(char)0xfe,可是在子线程中读出mm[0],但mm[0]!=(char)0xfe,不知什么原因?
------解决方案--------------------
// xx.h
extern char mm[5];
// xx.cpp
#include "xx.h"
char mm[5];
// dlg.cpp
#include "xx.h"
//在任何地方使用mm
------解决方案--------------------
怎么定义的?又怎么声明的?
------解决方案--------------------
可能某个线程更改了你的mm,这个涉及到线程同步问题!!
------解决方案--------------------
mm[0]=(char)0xfe;//什么时候发生的?确定是在子线程读取之前
还有看看其他地方有没有对mm做过修改
------解决方案--------------------
你是不是有局部变量跟全局变量重名了。可以把代码贴出来大家看一下。理论上不会出现你说的这种情况的。