栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++中多线程、多页面、多文件共享变量及具体读/写实现(含源码)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++中多线程、多页面、多文件共享变量及具体读/写实现(含源码)

在C++开发WIN32窗口程序时,很多时候需要用到全局变量和多线程互相调用全局变量等,比如,一个线程用来利用websocket获取服务器的数据并放到一个缓存池中(尽量减少等待),一个线程用来获取缓存池中的变量值以刷新窗口界面显示,一个线程将缓存池中需要更新的数据,拉取更新到数据库,这样可以保证,互不影响。

实现全局变量其实很简单,就是创建一个被所有页面调用的类(含:头文件.h和类文件.cpp),在此文件中先用extern声明一个变量(但千万不要赋值),然后在类文件.cpp中进行相关赋值初始化等。这样就可以在其他文件中调用了(当然,其他文件中要引用此头文件#include “global.h”)
global.h

extern int test;

global.cpp

#include "global.h"
int test = 0;

说了原理,我们做个实际例子展示下:

1、创建新项目 - Windows桌面向导

2、选择桌面应用程序

3、创建global.h 和 global.cpp

global.h

#pragma once

extern int test;

class global
{
};

global.cpp

#include "global.h"

int test = 0;

4、在头文件的资源文件Resource.h中,增加按钮消息变量

#define IDB_BUTTON_TEST        300

5、在项目主文件Project3.cpp中分别增加以下代码

引入全局变量文件和事先声明一个按钮变量名,并且申明一个线程threadA和A的执行方法,以及在WinMain方法中,激活线程threadA

修改窗口大小

增加按钮点击事件

分别在WndProc方法中,增加按钮点击事件和按钮加载语句

做了以上动作后,我们就简单做了:
1、一个C++ WIN32程序窗口
2、窗口有一个按钮pButtonTest,点击按钮后,弹出传递过来的字符串:123456
3、一个独立与窗口的线程threadA,此线程每5秒报下自己的名字:线程A

准备工作就做好了,接下来,我们要实现:线程A每1秒将全局变量+1,我们点击窗口线程中的按钮,可以看到当前全局变量的值的变化。

首先,将线程A的执行方法的弹窗改成:test++

然后,将点击按钮执行的事件换成

PS:由于我们使用的是“使用 Unicode 字符集”,所以默认弹窗提醒MessageBox里的文字要使用多字节字符串,便于展示我先使用窄字符弹窗方法:MessageBoxA。
另外,因为使用了sprintf函数,所以,需要增加头文件

#include 

最终效果如下

源码下载:https://gitee.com/kefong/project-global.git

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/717033.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号