news 2026/4/18 18:10:34

[开源上新] 基于Share Memory的IPC : https://github.com/missionlove/SMIPC

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
[开源上新] 基于Share Memory的IPC : https://github.com/missionlove/SMIPC

SMIPC

A light IPC DLL based on share memory.

github地址:
https://github.com/missionlove/SMIPC

SMIPC 是一个基于 Windows 共享内存(Shared Memory)的轻量级 IPC 库,面向低延迟、高吞吐的本机进程通信场景。

项目核心逻辑

SMIPC 的核心是“数据区 + 事件队列”的双层设计:

  • 数据区(Buffer):使用共享内存存放 payload。
  • 事件队列(IO Event Queue):仅传递事件元数据(event_codeevent_iduser_tagbuffer_ref)。
  • 同步原语:通过互斥量和信号量实现并发安全与阻塞唤醒。
  • 业务状态位working_flag由业务方维护,表达“是否仍有待处理工作”。

典型流程(进阶模式):

  1. smipc_buffer_write写入 payload,得到buffer_ref
  2. smipc_event_push推送事件(携带buffer_ref
  3. 接收方smipc_event_popsmipc_buffer_read取数据

此外也提供简化模式:smipc_send/smipc_receive,用于快速接入。

项目目标

  • 提供一个简单、稳定、可嵌入的 Windows IPC DLL。
  • 支持请求-响应、批量消息、优雅关闭等常见业务模式。
  • 在保证接口清晰的前提下,提供较好的延迟和吞吐表现。

项目优点

  • 低开销:数据在本机共享内存中流转,避免额外序列化/网络栈开销。
  • 接口分层清晰:既有简化 API,也有可控度更高的事件+缓冲区 API。
  • 扩展性好:支持批量 push/pop、多线程、可选 TCP 同步通知。
  • 工程可落地:仓库内包含ServerDemoClientUITestsBenchmark示例与验证代码。

性能数据(本地压测)

压测程序:x64/Release/SMIPC.Benchmark.exe

测试命令(本次数据来源):

  • SMIPC.Benchmark.exe 50000 64 1 1
  • SMIPC.Benchmark.exe 50000 256 1 1
  • SMIPC.Benchmark.exe 50000 1024 1 1
  • SMIPC.Benchmark.exe 30000 64 8 1
  • SMIPC.Benchmark.exe 50000 64 1 4

说明:数据为单机实测结果,用于趋势参考;不同 CPU/负载/编译选项下数值会变化。

压测结果表

场景参数(rounds,payload,batch,threads)QPS (msg/s)吞吐 (MB/s)平均延迟 (us/msg)P50 (us)P90 (us)P99 (us)
单线程小包50000, 64B, 1, 189,358.910.9111.1910.612.418.8
单线程中包50000, 256B, 1, 186,150.642.0711.6110.812.919.4
单线程大包50000, 1024B, 1, 185,817.4167.6111.6511.012.919.1
批处理模式30000, 64B, 8, 1191,63723.395.2240.8*52.6*61.3*
4线程并发50000, 64B, 1, 4252,62930.843.9614.2*20.2*31.1*

* 说明:批处理/多线程下,p50/p90/p99的统计口径与单线程单条消息不同(Benchmark 程序会输出口径说明)。

QPS 图示(基于以上数据)

SMIPC Benchmark QPS64B-1T256B-1T1024B-1T64B-B864B-4T260000240000220000200000180000160000140000120000100000800006000040000200000msg/s

1) 压测命令模板

SMIPC.Benchmark.exe <rounds> <payload_bytes>[batch_size][threads]

推荐至少覆盖以下场景:

  • 单线程:50000 64 1 1
  • 单线程:50000 256 1 1
  • 单线程:50000 1024 1 1
  • 批处理:30000 64 8 1
  • 多线程:50000 64 1 4

2) 测试环境信息模板

[Hardware] CPU Model : <e.g. Intel Core i7-12700H / AMD Ryzen 7 7840H> CPU Cores : <physical/logical, e.g. 6P+8E / 20 threads> CPU Frequency : <base/turbo, and whether fixed frequency was used> Memory : <size + speed, e.g. 32GB DDR5-5600> Storage : <SSD model, optional> [OS] OS Version : <e.g. Windows 10 22H2 build xxxx> Background Load: <idle / moderate / heavy> [Build] Solution/Target: <e.g. SMIPC.sln / x64 Release> Compiler : <MSVC version> Optimization : </O2, LTCG on/off, debug symbols on/off> Runtime Library : </MD or /MT> [Power] Power Mode : <Best performance / Balanced / Power saver> Power Plan : <Windows power plan name> Thermal State : <normal / throttling observed> [Benchmark Config] Executable : <path to SMIPC.Benchmark.exe> Rounds/Payload : <exact args> Batch/Threads : <exact args> Run Count : <e.g. 3 runs, take median>

文档

  • API 帮助文档
  • 业务场景模板
  • 事件码分配规范模板

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 17:51:19

如何快速掌握MDAnalysis:分子动力学分析的终极Python工具指南

如何快速掌握MDAnalysis&#xff1a;分子动力学分析的终极Python工具指南 【免费下载链接】mdanalysis MDAnalysis is a Python library to analyze molecular dynamics simulations. 项目地址: https://gitcode.com/gh_mirrors/md/mdanalysis MDAnalysis是一款强大的Py…

作者头像 李华
网站建设 2026/4/18 18:10:34

软件系统第三方测评,为什么越来越重要

简单来讲&#xff0c;软件系统第三方测评&#xff0c;讲的就是找一家独立的专业机构&#xff0c;去给软件开发而出的质量做把关。当下&#xff0c;各行各业都在推进数字化转型&#xff0c;银行、政府、医疗、制造等领域的核心业务愈发依赖软件系统运转。软件开发团队自行测试自…

作者头像 李华
网站建设 2026/4/18 0:05:47

JiYuTrainer终极指南:轻松解除极域电子教室控制的完整教程

JiYuTrainer终极指南&#xff1a;轻松解除极域电子教室控制的完整教程 【免费下载链接】JiYuTrainer 极域电子教室防控制软件, StudenMain.exe 破解 项目地址: https://gitcode.com/gh_mirrors/ji/JiYuTrainer 你是否曾被极域电子教室的全屏广播控制困扰&#xff0c;无法…

作者头像 李华