本文主要是介绍github源码指引:共享内存、数据结构与算法:基于共享内存的散列存储hash,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
初级代码游戏的专栏介绍与文章目录-CSDN博客
我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。
这些代码大部分以Linux为目标但部分代码是纯C++的,可以在任何平台上使用。
相关专题:共享内存、数据结构与算法_初级代码游戏的博客-CSDN博客
相关文章:20、基于共享内存的散列存储hash-CSDN博客
基础操作:github源码指引:共享内存、数据结构与算法-CSDN博客
目录
一、运行示例
二、示例代码
一、运行示例
在shmfc目录运行run.sh,显示命令表:
----------------------------------------
命令表:(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):
输入17执行基于共享内存的hash的测试:
[08-26 08:39:22][应用][2516][信息] 用户输入的是:17
[08-26 08:39:22][2516-15][信息][shmArray.h : 960(AttachToShm)][ 0.59]test 连接共享内存成功 PI_N 1 PART 0 shmid = 622602 p 0x7f2cd2cf9000
[08-26 08:39:22][2516-16][信息][shmArray.h : 960(AttachToShm)][ 0.59]test_D 连接共享内存成功 PI_N 2 PART 0 shmid = 655371 p 0x7f2cd2cf4000
[08-26 08:39:22][应用][2516][信息][shmIActiveObject.h :1059(RunCmdUI)][ 0.59]
当前对象:test 子项[test test_D ]b:返回上一层 child:选择子项操作 默认显示子项列表和最后操作状态
1:创建 2:连接(只读) 3:连接(可写) 4:断开 5:禁用互斥 6:清除数据 7:创建私有 8:删除共享内存 9:显示 10:数据
11:从数据库加载 12:保存到数据库
21:从目录加载 22:保存到目录 23:导出为文本文件
31:从目录加载到私有内存 32:销毁私有内存
97:repair 98:check 99:ToDo 100:shell(q=exit ):
输入b继续运行程序:
[08-26 08:39:54][应用][2516][信息][shmHash.h : 91(ReportData)][ 0.88] 65426 65526
[08-26 08:39:54][应用][2516][信息][shmHash.h : 87(ReportData)][ 0.88]------------ 65527 65427
[08-26 08:39:54][应用][2516][信息][shmHash.h : 91(ReportData)][ 0.88] 65427 65527
[08-26 08:39:54][应用][2516][信息][shmHash.h : 87(ReportData)][ 0.88]------------ 65528 65428
[08-26 08:39:54][应用][2516][信息][shmHash.h : 91(ReportData)][ 0.88] 65428 65528
[08-26 08:39:54][应用][2516][信息][shmHash.h : 87(ReportData)][ 0.88]------------ 65529 65429
[08-26 08:39:54][应用][2516][信息][shmHash.h : 91(ReportData)][ 0.88] 65429 65529
[08-26 08:39:54][应用][2516][信息][shmHash.h : 87(ReportData)][ 0.88]------------ 65530 65430
[08-26 08:39:54][应用][2516][信息][shmHash.h : 91(ReportData)][ 0.88] 65430 65530
[08-26 08:39:54][应用][2516][信息][shmHash.h : 87(ReportData)][ 0.88]------------ 65531 65431
[08-26 08:39:54][应用][2516][信息][shmHash.h : 91(ReportData)][ 0.88] 65431 65531
[08-26 08:39:54][应用][2516][信息][shmHash.h : 87(ReportData)][ 0.88]------------ 65532 65432
[08-26 08:39:54][应用][2516][信息][shmHash.h : 91(ReportData)][ 0.88] 65432 65532
[08-26 08:39:54][应用][2516][信息][shmHash.h : 87(ReportData)][ 0.88]------------ 65533 65433
[08-26 08:39:54][应用][2516][信息][shmHash.h : 91(ReportData)][ 0.88] 65433 65533
[08-26 08:39:54][应用][2516][信息][shmHash.h : 87(ReportData)][ 0.88]------------ 65534 65434
[08-26 08:39:54][应用][2516][信息][shmHash.h : 91(ReportData)][ 0.88] 65434 65534
[08-26 08:39:54][应用][2516][信息][shmHash.h : 87(ReportData)][ 0.88]------------ 65535 65435
[08-26 08:39:54][应用][2516][信息][shmHash.h : 91(ReportData)][ 0.88] 65435 65535
[08-26 08:39:54][应用][2516][信息][shmIActiveObject.h :1059(RunCmdUI)][ 0.88]
当前对象:test 子项[test test_D ]b:返回上一层 child:选择子项操作 默认显示子项列表和最后操作状态
1:创建 2:连接(只读) 3:连接(可写) 4:断开 5:禁用互斥 6:清除数据 7:创建私有 8:删除共享内存 9:显示 10:数据
11:从数据库加载 12:保存到数据库
21:从目录加载 22:保存到目录 23:导出为文本文件
31:从目录加载到私有内存 32:销毁私有内存
97:repair 98:check 99:ToDo 100:shell(q=exit ):
插入了很多数据,可以输入9查看一下:
[08-26 08:41:39][应用][2516][信息] 用户输入的是:9
[08-26 08:41:39][应用][2516][信息][shmArray.h :1401(Report)][ 1.18]
test 开始报告T_ARRAY......
pHead=0x7f2cd2cf9000 pData=0x7f2cd2cf9ad8 isPrivate=0 shmid=622602 sizeof(T)=8
GUID = 8AA20E2E-4891-4df1-A87E-E5A23CB8D076
sizeof short= 2 int= 4 long= 8 byteorder= 10 = 2776 1 = 24 2 = 8 3 = 0 4 = 998 5 = 9996 = 1000
name=test part=0 capacity=65536,size=65536(100.00%) bytes=527064
地址映射表: GET_PP_SET=(nil)
分块数 7
0 : shm_id=622602 handle[0,1024) 容量=1024 连接信息: shm_id=622602 addr=0x7f2cd2cf9ad8
1 : shm_id=753678 handle[1024,2048) 容量=1024 连接信息: shm_id=753678 addr=0x7f2cd2cf2000
2 : shm_id=819216 handle[2048,4096) 容量=2048 连接信息: shm_id=819216 addr=0x7f2cd2cee000
3 : shm_id=884754 handle[4096,8192) 容量=4096 连接信息: shm_id=884754 addr=0x7f2cd2ce6000
4 : shm_id=950292 handle[8192,16384) 容量=8192 连接信息: shm_id=950292 addr=0x7f2cd2cd6000
5 : shm_id=1015830 handle[16384,32768) 容量=16384 连接信息: shm_id=1015830 addr=0x7f2cd2cb6000
6 : shm_id=1081368 handle[32768,65536) 容量=32768 连接信息: shm_id=1081368 addr=0x7f2cd2c76000
--------------------------------------------
bucket_count 65536(32768 of 32768)
[08-26 08:41:39][应用][2516][信息][shmMultiList.h : 282(Report)][ 1.18]test_D 开始报告T_ARRAY......
pHead=0x7f2cd2cf4000 pData=0x7f2cd2cf4ad8 isPrivate=0 shmid=655371 sizeof(T)=16
GUID = 8AA20E2E-4891-4df1-A87E-E5A23CB8D076
sizeof short= 2 int= 4 long= 8 byteorder= 10 = 2776 1 = 24 2 = 16 3 = 0 4 = 998 5 = 9996 = 1000
name=test_D part=0 capacity=131072,size=100000(76.29%) bytes=2099928
地址映射表: GET_PP_SET=(nil)
分块数 8
0 : shm_id=655371 handle[0,1024) 容量=1024 连接信息: shm_id=655371 addr=0x7f2cd2cf4ad8
1 : shm_id=688140 handle[1024,2048) 容量=1024 连接信息: shm_id=688140 addr=0x7f2cd2c72000
2 : shm_id=720909 handle[2048,4096) 容量=2048 连接信息: shm_id=720909 addr=0x7f2cd2c6a000
3 : shm_id=786447 handle[4096,8192) 容量=4096 连接信息: shm_id=786447 addr=0x7f2cd2c5a000
4 : shm_id=851985 handle[8192,16384) 容量=8192 连接信息: shm_id=851985 addr=0x7f2cd2c3a000
5 : shm_id=917523 handle[16384,32768) 容量=16384 连接信息: shm_id=917523 addr=0x7f2cd068e000
6 : shm_id=983061 handle[32768,65536) 容量=32768 连接信息: shm_id=983061 addr=0x7f2cd060e000
7 : shm_id=1048599 handle[65536,131072) 容量=65536 连接信息: shm_id=1048599 addr=0x7f2cd050e000
--------------------------------------------
free_size=0 free_head=-1 0h NEXT | N
----- ----- - ------0 -1 | 1001 -1 | 1012 -1 | 1023 -1 | 1034 -1 | 1045 -1 | 1056 -1 | 1067 -1 | 1078 -1 | 1089 -1 | 109...
99990 34454 | 100090
99991 34455 | 100091
99992 34456 | 100092
99993 34457 | 100093
99994 34458 | 100094
99995 34459 | 100095
99996 34460 | 100096
99997 34461 | 100097
99998 34462 | 100098
99999 34463 | 100099
----- ----- - ------
输入b继续运行程序:
[08-26 08:40:31][应用][2516][信息] 用户输入的是:b
[08-26 08:40:31][应用][2516][信息][shmfc_t.cpp : 945(main)][ 0.88]命令 17 返回 0
二、示例代码
示例代码很简单:
static int T_SHM_HASH_test(int argc, char** argv, char const* name, int version){G_IS_DEBUG = false;try{T_SHM_HASH<T_DATA, PI_HASH, PI_DATA> a(name, version);if (a.Attach(false) || (a.CreateShm() && a.Attach(false) && a.m_mutex.Reset())){a.RunCmdUI();a.clear();long count = 100000;CDemoData data;CDemoData* data_from_shm;for (int i = 0; i < count; ++i){DEBUG_LOG << i << endi;data.n = i + 100;if (!a.AddData(data, data_from_shm))return __LINE__;}for (int i = 0; i < count; ++i){data.n = i + 100;if (!a.GetData(data, data_from_shm))return __LINE__;}a.ReportData();a.Extend();a.ReportData();a.RunCmdUI();a.Detach();//a.DestoryShm();return 0;}else{return __LINE__;}}catch (char const* e){thelog << e << ende;abort();}}
实际功能代码shmHash.h。
(这里是文档结束)
这篇关于github源码指引:共享内存、数据结构与算法:基于共享内存的散列存储hash的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!