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

news2024/11/23 2:24:51

初级代码游戏的专栏介绍与文章目录-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返回上一层。

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


(这里是文档结束)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2072721.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一键拼图神器CollageIt,让你的照片秒变艺术大作!

前言 嘿,你是否曾对着满屏的照片发愁,想要快速整理成精美的作品集,却又被繁琐的排版搞得头昏脑涨?如果有一款神器,能让你一键搞定这些烦恼,轻松提升办公效率,是不是觉得升职加薪的曙光就在眼前…

Python 进度条tqdm应用记录

tqdm 简介 tqdm 是一个非常流行的 Python 库,用于快速添加进度条到循环中。它可以方便地集成到脚本中,并且支持多种类型的迭代器。 安装 首先确保你安装了 tqdm。如果还没有安装,可以通过 pip 安装它(如果要在 jupyter noteboo…

游戏开发设计模式之单例模式

单例模式(Singleton Pattern)是一种常见的设计模式,其主要目的是确保一个类在整个程序的生命周期中只有一个实例,并提供一个全局访问点来获取这个实例。在游戏开发中,单例模式具有广泛的应用和重要的作用。 单例模式的…

如何评估Redis的性能

如果系统中出现了大 key、热 key 等,往往会导致 Redis 变慢,但是这个慢该如何界定?多久算慢?1秒还是3秒? 这个肯定是没有标准答案,因为这个和你的硬件设备有关。 硬件差一些,平时响应时间都是…

OSPF路由原理详解与关键点

目录 一. OSPF简介: 二. OSPF原理描述: 三. OSPF的核心内容: 四. OSPF的邻居关系和邻接 五. LSA在各区域中传播的支持情况 一. OSPF简介: 开放式最短路径优先OSPF(Open Shortest Path First)是IETF组织开发的一个基于链路状态的内部网关协议&…

打造编程学习的知识宝库:高效笔记与整理技巧

在编程的海洋中,知识的深度和广度都是难以估量的。要想在这片海洋中航行而不迷失方向,一个高效的笔记系统是不可或缺的。本文将探讨如何建立一个既能快速记录又易于回顾的笔记系统,以及如何在繁忙的学习中保持笔记的条理性。 目录 一、确定笔…

数三角形(二)》-筛除法斜线结论

算法思路: 1、一个直观的思路是筛除法,即:答案总数-三点共线的种数 总数易求得,为组合数C((n1)*(m1),3),考虑到n、m数值范围,考虑用long long。 2、三点共线的情况有: (1&#xff09…

Linux驱动学习之按键读取

按键读取我们需要实现read函数, read 函数的 第二个参数被__user 修饰,原则上在内核层我们不能直接访问,需要调用 copy_to_user()这个函数,从内核获取数据到上层。 copy_to_user(void __user volatile * to, const void * from,…

C语言笔试题(指针、数组、整数在内存中的存储、结构体......)

文章目录 1.选择题2.代码题2.1 模拟实现strncat2.2 模拟实现strncpy2.3 编写判断大小端程序2.4 模拟实现atoi2.5 BC38 变种水仙花数2.6 BC98 序列中删除指定数字 今天我们一起来看一些题目 1.选择题 解析如下: 正确选项:B A.参数错误;D.返回…

什么是Redis集群的脑裂问题?

目录 一、脑裂的发生 二、脑裂的危害 三、如何避免脑裂? 四、能彻底解决脑裂吗? 所谓脑裂,就像他的名字一样,大脑裂开了,一般来说就是指一个分布式系统中有两个子集,然后每个子集都有一个自己的大脑(Le…

【Excal】And函数

奖金评定说明 业绩低于6000,奖金为100 业绩大于等于6000且小于10000,奖金为200 业绩大于等于10000,奖金为500 然后按回车健 下拉填充

BurpSuite2024.7.3专业版

前言 Burp Suite是一个无需安装软件,下载完成后,直接从命令行启用即可。开箱即可使用支持LInux/Windows/Mac 01更新介绍 2024.7.13版本界面大改动此版本引入了重大的性能升级、对拦截功能的重大增强,以及在审计项目表中新增了扫描插入点列。…

【Nature】在科研中应用ChatGPT:如何与数据对话

随着人工智能技术的迅猛发展,大型语言模型(LLMs)正逐渐成为科研领域的一种创新工具。这些模型通过自然语言处理技术,使得研究人员能够以直观的方式与数据进行交互,从而简化了数据分析和解释的过程。在《自然》杂志2024…

103.二叉树的锯齿形层序遍历

1.题目描述 给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。 示例 1: 输入:root [3,9,20,nul…

Unity-可分组折叠的Editor

Unity-可分组折叠的Editor 🥗功能介绍🍭用法 🥗功能介绍 在序列化的字段上标记特性:[FoldoutGroup(“xxx”)],inspector上就会被分组折叠显示。 (没有被指定的字段自动放到Default组中) 传送门&#x1f30…

如何用Java SpringBoot和Vue搭建高效的OA办公管理系统?

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

深度学习--复制机制:CopyNet 模型在序列到序列模型中的应用以及代码实现

CopyNet 是一种特别设计的序列到序列(Seq2Seq)模型,旨在更好地处理那些在输出序列中需要直接复制输入序列中的部分或全部内容的任务。它在机器翻译、摘要生成、文本复述等任务中有广泛的应用,尤其是在输入和输出有显著重叠的场景。…

Spring--三级缓存机制

一、什么是三级缓存 就是在Bean生成流程中保存Bean对象三种形态的三个Map集合&#xff0c;如下&#xff1a; // 一级缓存Map 存放完整的Bean&#xff08;流程跑完的&#xff09; private final Map<String, Object> singletonObjects new ConcurrentHashMap(256);// 二…

51单片机——LED灯控制

1、LED介绍 中文名&#xff1a;发光二极管 外文名&#xff1a;Light Emitting Diode 简称&#xff1a;LED 用途&#xff1a;照明、广告灯、指引灯、屏幕 2、LED原理图 电阻在原理图上标注为1k&#xff0c;表示这是1千欧的电阻&#xff0c;实际在电路板上的表示是102 102解…

HarmonyOs应用权限申请,system_grant和user_grant区别。本文附头像上传申请user-grant权限代码示例

HarmonyOs应用权限申请&#xff0c;system_grant和user_grant区别。本文附头像上传申请user-grant权限代码示例 system_grant&#xff08;系统授权&#xff09; system_grant指的是系统授权类型&#xff0c;在该类型的权限许可下&#xff0c;应用被允许访问的数据不会涉及到用户…