首页 > 系统相关 >(原创)[开源][.Net Standard 2.0] SimpleMMF (进程间通信框架)更新 v1.1,极低CPU占用

(原创)[开源][.Net Standard 2.0] SimpleMMF (进程间通信框架)更新 v1.1,极低CPU占用

时间:2025-01-19 09:42:40浏览次数:1  
标签:v1.1 SimpleMMF 间通信 开源 https Net com CPU

一、前言

在上一篇 (原创)[.Net] 进程间通信框架(基于共享内存)——SimpleMMF 中,发布了v1.0版,最大的问题是:CPU占用较高,至少40-50%
这既与我的开发水平有关,也与SimpleMMF诞生环境有关,这个主要是用在数字孪生各软件之间同步数据,而部署软件的工作站性能都强悍,像我常用的便是一个有着192GB内存的工作站,CPU的具体型号忘了。
再加上相关的软件一个比一个吃资源,所以也不差SimpleMMF这一个。

但是,毕竟不完善,这几年间也时间有人发邮件说此问题,同时也反馈.net 4.8的版本也较低,也有人发了提升了.net版本及优化的工程,既然SimpleMMF不止我用,还在发挥作用,趁近期得空,好好的优化一版。

相信看完的你,一定会有所收获!

本文地址:https://www.cnblogs.com/lesliexin/p/18676994

二、开源地址

SimpleMMF 是开源的,开源地址如下:

GitHub:
https://github.com/lesliexinxin/LeslieXin.SimpleMMF

Gitee:
https://gitee.com/lesliexin/lesliexin.simplemmf

同时v1.1也上传到了NuGet上,地址如下:
https://www.nuget.org/packages/LeslieXin.SimpleMMF

三、优化内容

本节是本文的核心,优化主要分两部分:
1,.Net框架版本低的问题。
2,CPU占用高的问题。
我们下面分别来看。

1,.Net框架版本低的问题

V1.0的版本是基于 .Net 4.5 开发的,为了兼容更广,特别是支持.Net Core、.Net6\7\8\9,必然要做调整。

经过对比选型,决定使用 .Net Standard 2.0 进行开发,因为它支持的范围更广,如图所示:

如此一来,本问题也就解决了。

2,CPU占用高的问题

这个问题的根源,在于代码中使用轮询的方式,去监测共享内存状态,这样便会导致空转过快,进而导致CPU占用提升。

而优化方法,便是使用 命名事件 ,MSDN上的解释如下:
https://learn.microsoft.com/zh-cn/dotnet/standard/threading/eventwaithandle)

因为有命名事件的参与,所以就不需要3个共享内存块了,只需要一个用来存储数据即可。

四、效果显示

演示Demo已开源:

GitHub:
https://github.com/lesliexinxin/Demo_SimpleMMF

Gitee:
https://gitee.com/lesliexin/demo-simplemmf

请看下面的录屏,主要便是看CPU的占用与变化。

五、结语

技术没有新旧之分同,只有合不合适之分。
感谢的大家的观看与学习,如有错误欢迎批评指正。

标签:v1.1,SimpleMMF,间通信,开源,https,Net,com,CPU
From: https://www.cnblogs.com/lesliexin/p/18676994

相关文章

  • 操作系统进程-进程间通信的概述、匿名管道pipe和有名管道mkfifo函数的介绍及应用
    进程间通信(IPC)概述进程间通信(InterProcessCommunication)是指在两个或多个不同的进程间传递或者交换信息。进程是一个独立的资源管理单元,不同的进程之间资源是独立的,不能在一个进程中直接访问另一个进程的资源,但是进程间不是孤立的,也需要一些信息的交互和状态传递,所以就......
  • 扫雷v1.14版本
    更新:删除了雷数不对的bug#include<iostream>#include<cstdlib>#include<ctime>#include<windows.h>usingnamespacestd;intmain(){ srand(time(NULL)); inthp=3,zgls=0,hdls=0,inls=0; charez[10][10]={ '#','#','#&#......
  • 07、Docker学习,容器间通信
    Docker学习,容器间通信今天在Docker中安装Nacos连接MySQL的时候出现了问题,发现容器间需要通信。现在记录下来:1、创建自定义网络(用于容器间通讯)dockernetworkcreatecommon-network2、查看网络dockernetworkls3、重新安装mysqldockerrun-p13306:3306--......
  • Lec 12 进程间通信
    Lec12进程间通信License本内容版权归上海交通大学并行与分布式系统研究所所有使用者可以将全部或部分本内容免费用于非商业用途使用者在使用全部或部分本内容时请注明来源资料来自上海交通大学并行与分布式系统研究所+材料名字对于不遵守此声明或者其他违法使用本内容者,将......
  • linux进程间通信的方式
    在Linux系统中,进程间通信(Inter-ProcessCommunication,IPC)是多个进程之间共享数据或交换信息的方式。由于Linux中的进程具有独立的地址空间,直接共享内存是不可能得,因此需要使用特定的机制来实现进程间通信。1.管道(Pipe)匿名管道特性:单向通信,通常用于具有亲缘关系的进程(父子进......
  • 进程间通信
    一、概念进程间通信(Inter-ProcessCommunication,IPC)是指在操作系统中,两个或多个独立的进程之间进行数据交换和信息共享的机制。在多任务和多进程的操作系统中,进程通常是相互独立的,IPC提供了一种机制,使它们能够协同工作、交换数据和实现同步。二、方式1、管道(Pipe):匿名管道(Anony......
  • 12306分流抢票软件 bypass v1.16.43 绿色版(春节自动抢票工具)
    软件介绍12306Bypass分流抢票软件,易操作强大的12306抢票软件,全程自动抢票,云识别验证码打码,多线程秒单、稳定捡漏,支持抢候补票、抢到票自动付款,支持多天、多车次、多席别、多乘客、短信提醒等功能。1、Bypass分流抢票本身附带云识别模块帮助识别,但实际测试即便是不使用也不需要......
  • 鸿蒙 NEXT 开发中,使用公共事件进行进程间通信
    大家好,我是V哥,在鸿蒙NEXT开发中,使用公共事件进行进程间通信(IPC)是一种常见的做法。下面我将提供一个完整的业务代码示例,并解释逻辑关系,以便即使是初学者也能按照步骤进行实操,废话不多说,直接上干货。业务场景假设我们有两个应用,应用A和应用B。应用A需要在电量低时通知应用B执......
  • 进程间通信组件ZeroMQ详解
    在一些复杂的项目中,往往会由不同功能的程序组成,且在程序运行期间,各个程序还需要进行互相通信,实现进程间通信的方式有很多种,最常用的就是通过消息中间件,比如RabbitMQ,Kafka,以及ZeroMQ等,而RabbitMQ和Kafka这两款中间件往往都需要独立安装步骤才能使用,ZeroMQ却不需要独立安装部署,而是......
  • Windows11轻松设置(Win11一键优化) v1.10 中文绿色版
    软件介绍Windows11轻松设置软件是一款专门为Windows11系统设计的工具软件,具有多种特色功能和亮点。通过界面简洁、个性化定制、一键优化等功能,可以帮助用户更加便捷地进行系统设置和管理。同时,该软件的多种主题、系统优化、智能提示等特点也受到用户的欢迎。总之,Windows11轻松......