当前位置: 首页 > news >正文

github源码指引:共享内存、数据结构与算法

初级代码游戏的专栏介绍与文章目录-CSDN博客

我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。

这些代码大部分以Linux为目标但部分代码是纯C++的,可以在任何平台上使用。


        源码目录:shmfc

        相关专题:共享内存、数据结构与算法_初级代码游戏的博客-CSDN博客

目录

一、源码结构

二、编译、运行、初始设置


一、源码结构

        东西比较多,不过层次性很强,基本的几个:

  • makefile.mk 编译设置,会由脚本复制到makefile
  • rebuild.sh 编译
  • run.sh 运行
  • shmfc_t.cpp main函数和很多测试代码

二、编译、运行、初始设置

        执行rebuild.sh编译,如果顺利,会在../bin下得到shmfc.exe。

        执行run.sh运行程序,初次运行大概是这样:

[08-23 16:59:10][应用][信息][shmfc_t.cpp             : 793(main)][  0.00]控制台窗口尺寸 ws_row=59 ws_col=189
[08-23 16:59:10][应用][信息][shmfc_t.cpp             : 813(main)][  0.00]
GUID = 8AA20E2E-4891-4df1-A87E-E5A23CB8D076
sizeof short= 2 int= 4 long= 8    byteorder= 10 =     24  1 =     68  2 =    998  3 =    999  4 =   1000
[08-23 16:59:10][应用][信息][shmfc_t.cpp             : 822(main)][  0.00]主机字节序与网络字节序不相同
[08-23 16:59:10][应用][信息][shmfc_t.cpp             : 831(main)][  0.00]00000001
未配置环境变量 MY_STD_ENV
读取文件出错 未配置环境变量 MY_STD_ENV未能打开文件
[08-23 16:59:10][应用][出错][shmEnv.cpp              : 349(_Connect)][  0.00]连接主共享内存失败
[08-23 16:59:10][应用][出错][shmfc_t.cpp             : 835(main)][  0.00]未能连接到主共享内存,请检查信息
Press any key to continue(q=exit ):

         需要配置一个环境变量才能正确运行,输入q回车或者直接ctrl-c,然后设置环境变量:

export MY_STD_ENV=$HOME/my/third/ctfc/etc/

        这个目录就是源码里面的etc目录,共享内存的配置文件和运行时生成的文件都在这里。

        配好了再次运行:

[08-23 17:11:23][应用][信息][shmfc_t.cpp             : 793(main)][  0.00]控制台窗口尺寸 ws_row=59 ws_col=189
[08-23 17:11:23][应用][信息][shmfc_t.cpp             : 813(main)][  0.00]
GUID = 8AA20E2E-4891-4df1-A87E-E5A23CB8D076
sizeof short= 2 int= 4 long= 8    byteorder= 10 =     24  1 =     68  2 =    998  3 =    999  4 =   1000
[08-23 17:11:23][应用][信息][shmfc_t.cpp             : 822(main)][  0.00]主机字节序与网络字节序不相同
[08-23 17:11:23][应用][信息][shmfc_t.cpp             : 831(main)][  0.00]00000001
[08-23 17:11:23][应用][出错][shmEnv.cpp              : 349(_Connect)][  0.00]连接主共享内存失败
[08-23 17:11:23][应用][出错][shmfc_t.cpp             : 835(main)][  0.00]未能连接到主共享内存,请检查信息
Press any key to continue(q=exit ):

        已经不提示环境变量问题了,但是主共享内存还没有创建(主共享内存记录所有其他共享内存的信息),输入回车:

[08-23 17:15:05][应用][信息] 用户输入的是:
[08-23 17:15:05][应用][信息][shmfc_t.cpp             : 850(main)][  0.00]
----------------------------------------
命令表:(q=exit)
0 管理
1 test_BinaryPool
3 test_CMultiProcessServer
4 test_CMultiProcessServer_view
5 test_CMultiProcessServer_speed
6 test_CMultiProcessServer_direct
7 test_RebuildSet
12 UDP测试客户端
13 UDP测试服务端
14 CStressTesting
15 CTestCSimpleMultiProcess_mutex atomic
16 CTest_hash
17 T_SHM_HASH
88 test_CMyRWMutex
89 test_T_SHM_SET_GROUP
90 test_shm_IActiveObject
91 test_ShmMultiMap
99 test_ParseFromXml
........................................
----------------------------------------
请选择命令:(q=exit default=17):

        创建主共享内存在命令0里面,输入0然后回车:

[08-23 17:19:12][应用][信息] 用户输入的是:0
[08-23 17:19:12][应用][信息][CommandSet.h            : 236(doCommandSet)][  0.00]
命令表
命令 组         名称              命令 说明
---- ---------- ----------------- ---- --------------------------
0    系统管理   ShmEnvShow        0    显示主共享内存
1    系统管理   ShmEnvCreate      1    创建主共享内存
2    系统管理   SystemParamLoad   2    加载系统参数
3    系统管理   SystemParamSaveAs 3    系统参数另存为
4    系统管理   SystemParamClear  4    清空系统参数
5    系统管理   SystemParamDelete 5    删除系统参数
6    系统管理   SystemParamSet    6    设置系统参数10   信号量管理 SemShow           10   显示信号量
11   信号量管理 SemUnlock         11   解锁信号量101  工具       FindAllShm        101  查找全部共享内存
102  工具       FindCurrentShm    102  查找当前环境注册的共享内存
103  工具       ShowEnvShm        103  显示指定的ShmEnv
201  工具       ShowSysState      201  显示系统状态
---- ---------- ----------------- ---- --------------------------请选择命令:(--group选择命令组 b=break)(q=exit default=201):

        输入1然后回车即可创建主共享内存:

[08-23 17:20:23][应用][信息] 用户输入的是:1
[08-23 17:20:23][应用][出错][shmEnv.cpp              : 349(_Connect)][  0.00]连接主共享内存失败
[08-23 17:20:23][应用][信息][shmEnv.cpp              : 403(ShmEnvCreate)][  0.00]创建主共享内存成功 shm_id= 0 size= 2900552
[08-23 17:20:23][应用][信息][shmEnv.cpp              : 352(_Connect)][  0.00]连接主共享内存成功 shm_id= 0 size= 2900552
[08-23 17:20:23][应用][信息][shmEnv.cpp              : 424(ShmEnvCreate)][  0.01]
GUID = 8AA20E2E-4891-4df1-A87E-E5A23CB8D076
sizeof short= 2 int= 4 long= 8    byteorder= 10 =      0  1 = 2900552  2 =  10240
[08-23 17:20:23][应用][信息][shmEnv.cpp              : 434(ShmEnvCreate)][  0.01]创建主共享内存成功 shm_id= 0 size= 2900552
[08-23 17:20:23][应用][信息][shmEnv.cpp              : 718(GetSemReg)][  0.01]没有找到sem注册信息 GLOBAL GlobalMutex 0
[08-23 17:20:23][应用][信息][shmEnv.h                : 416(CGlobalMutex_Lock)][  0.01]CGlobalMutex_Lock
[08-23 17:20:23][应用][信息][shmEnv.h                : 421(CGlobalMutex_UnLock)][  0.01]CGlobalMutex_UnLock
[08-23 17:20:23][应用][信息][CommandSet.h            : 129(doCommand)][  0.01]
命令 ShmEnvCreate 执行完毕 返回码 0
press any key to continue ... (q=exit ):

        日志比较乱,看到最后“ 执行完毕 返回码 0”就可以了,在输入回车回到刚才的命令表,输入2,加载系统参数(etc/ctfc.ini),每个共享内存都有一个初始大小设置,加载完参数可以用命令0查看:

[08-23 17:23:38][应用][信息] 用户输入的是:0
[08-23 17:23:38][应用][信息][shmEnv.cpp              : 105(Report)][  0.01]
sem id 32768 ctime 20240823 172023-------------------------------------------
共享内存信息:i sys name part shmid segsz ctime ctime
- --- ---- ---- ----- ----- ----- -----
- --- ---- ---- ----- ----- ----- -----共计 0 个-------------------------------------------
信号量信息:i sys    name        part      ctime ctime           写锁 写计数 读计数 写等待
- ------ ----------- ---- ---------- --------------- ---- ------ ------ ------
0 GLOBAL GlobalMutex    0 1724404823 20240823 172023    1      0      0      0
- ------ ----------- ---- ---------- --------------- ---- ------ ------ ------共计 1 个-------------------------------------------
参数信息:i section    name                        param              current
-- ---------- --------------------------- ------------------ -------0 SHM_CONFIG CTestShmIActiveObject       link:$HOME/efc/etc1 SHM_CONFIG default.SHM_DB_TABLE_DEF    1002 SHM_CONFIG default.SHM_DB_COLUMN_DEF   1003 SHM_CONFIG default.SHM_DB_INDEX_DEF    1004 SHM_CONFIG default.SHM_DB_STRING_POOL  10000005 SHM_CONFIG default.SHM_DB_STRING_POOL# 10000006 SHM_CONFIG default.SHM_DB_DATA         100007 SHM_CONFIG default.SHM_DB_INDEX        100008 SHM_CONFIG default.SHM_DB_REDO_0       10000009 SHM_CONFIG default.SHM_DB_REDO_1       1000000
10 SHM_CONFIG default.SHM_DB_REDO_2       1000000
11 SHM_CONFIG default.SHM_DB_SEQUENCE     100
12 SHM_CONFIG default.tmp                 1000000
13 SHM_CONFIG default.ShmPool             100
14 SHM_CONFIG default.ShmInfoPoint        100
15 SHM_CONFIG default.MessageQueue        100000
16 SHM_CONFIG default.MessageQueueEX      100000
17 SHM_CONFIG default.multimap            100
18 SHM_CONFIG default.multimap2           100
19 SHM_CONFIG default.set_group           50000000
20 SHM_CONFIG default.hash                256
21 SHM_CONFIG default.hash_D              1024
-- ---------- --------------------------- ------------------ -------共计 22 个-------------------------------------------
运行时信息:i model name runtime
- ----- ---- -------
0 测试  test       1
- ----- ---- -------共计 1 个-------------------------------------------
统计信息:i model name  statistics
- ----- ----- ----------
0 测试s tests          2
- ----- ----- ----------共计 1 个[08-23 17:23:38][应用][信息][CommandSet.h            : 129(doCommand)][  0.01]
命令 ShmEnvShow 执行完毕 返回码 0
press any key to continue ... (q=exit ):

        由于是多层菜单,看到“ b=break”的时候可以输入b返回上一层。

        现在可以使用命令表的测试功能了。


(这里是文档结束)


http://www.mrgr.cn/news/9763.html

相关文章:

  • 代码随想录训练营 Day38打卡 动态规划 part06 322. 零钱兑换 279. 完全平方数 139. 单词拆分
  • 基于QT与STM32的电力参数采集系统(华为云IOT)(211)
  • TensorFlow 的基本概念和使用场景
  • 变异性:Covariance与Contravariance在C#中的运用艺术
  • AI在医学领域:HYDEN一种针对医学图像和报告的跨模态表示学习方法
  • 【MySQL数据库管理问答题】第3章 理解 MySQL 体系
  • 33.鼠标悬停时的波浪线效果 CSS 重置
  • centos彻底卸载docker服务
  • Linux并发与竞争
  • 无人机智能化程度怎么样?
  • 数据结构(6.3_2)——图的深度优先遍历
  • 企业本地部署大型语言模型(LLMs)构建本地垂直领域知识库的策略|空天防御
  • 前端音视频以及(关于收集用户信息的标签)
  • 小马识途海外媒体推广有何优势?
  • 【YOLOv8改进[Conv]】 感受野注意力卷积RFAConv(2024.3)| 使用RFAConv改进目标检测效果 + 含全部代码和详细修改方式
  • 羚羊软件:处理sql server 2008 R2 Error 9003
  • Pytorch构建网络模型结构都有哪些方式
  • 企业网站模板资源
  • Java笔试面试题AI答之集合(5)
  • CANoe.DiVa的应用——生成TP层测试用例过程流程详解(二)