请问C++大神
请教C++大神
如何在不同线程中的类中传递参数
例如,我主对话框中有一子线程不断接受服务器数据并存储到buffer类中。子对话框的子线程要取出此buffer中的数据,如何保证访问的是同一个buffer,或者说我子对话框的子线程如何访问存储数据的buffer。不建议用构造全局对象。
------解决思路----------------------
方法有多种,两个对话框可以获取彼此的指针,就可以通过该指针,给对方传递数据,
比如A对话框new了一个结构体p,然后启动一个线程,把这个结构体指针p扔进去,然后
A对话框获取到B对话框的指针,通过这个指针给B对话框对象的成员变量赋值或调用B对话框对象的成员函数,
把这个结构体指针p传递给B对话框对象,B对话框对象再启动它自己的线程并把p扔进去。
至于A和B对话框如何获取对方的指针,如果是A、B对话框是父子关系,B可以用GetParent()获取A的指针,
如果B对话框是由A对话框创建的,可以通过构造函数或成员函数等,把A的指针传递给B。
当然也可以通过发自定义Windows消息的方式在两个对话框间传递数据,传递指针。
不过这样做都比较麻烦,所以适当使用全局变量还是可以的,单例模式本身就相当于用了全局变量,
你生成的每一个MFC项目,都有一个class CXXApp : public CWinApp和extern CXXApp theApp;
这个就是个全局变量,你可以把需要共享的变量放在 theApp中。在哪里都能访问,程序不是非常大的话这样做是最简便的
如何在不同线程中的类中传递参数
例如,我主对话框中有一子线程不断接受服务器数据并存储到buffer类中。子对话框的子线程要取出此buffer中的数据,如何保证访问的是同一个buffer,或者说我子对话框的子线程如何访问存储数据的buffer。不建议用构造全局对象。
------解决思路----------------------
方法有多种,两个对话框可以获取彼此的指针,就可以通过该指针,给对方传递数据,
比如A对话框new了一个结构体p,然后启动一个线程,把这个结构体指针p扔进去,然后
A对话框获取到B对话框的指针,通过这个指针给B对话框对象的成员变量赋值或调用B对话框对象的成员函数,
把这个结构体指针p传递给B对话框对象,B对话框对象再启动它自己的线程并把p扔进去。
至于A和B对话框如何获取对方的指针,如果是A、B对话框是父子关系,B可以用GetParent()获取A的指针,
如果B对话框是由A对话框创建的,可以通过构造函数或成员函数等,把A的指针传递给B。
当然也可以通过发自定义Windows消息的方式在两个对话框间传递数据,传递指针。
不过这样做都比较麻烦,所以适当使用全局变量还是可以的,单例模式本身就相当于用了全局变量,
你生成的每一个MFC项目,都有一个class CXXApp : public CWinApp和extern CXXApp theApp;
这个就是个全局变量,你可以把需要共享的变量放在 theApp中。在哪里都能访问,程序不是非常大的话这样做是最简便的