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= 1
 0 =     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= 1
 0 =     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= 1
 0 =      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/etc
 1 SHM_CONFIG default.SHM_DB_TABLE_DEF    100
 2 SHM_CONFIG default.SHM_DB_COLUMN_DEF   100
 3 SHM_CONFIG default.SHM_DB_INDEX_DEF    100
 4 SHM_CONFIG default.SHM_DB_STRING_POOL  1000000
 5 SHM_CONFIG default.SHM_DB_STRING_POOL# 1000000
 6 SHM_CONFIG default.SHM_DB_DATA         10000
 7 SHM_CONFIG default.SHM_DB_INDEX        10000
 8 SHM_CONFIG default.SHM_DB_REDO_0       1000000
 9 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返回上一层。

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


(这里是文档结束)

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值