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

news/2025/1/19 9:42:55/文章来源:https://www.cnblogs.com/lesliexin/p/18676994

一、前言

在上一篇 (原创)[.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的占用与变化。

五、结语

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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Elasticsearch 笔记

目录ES 相关概念概述核心概念1)索引 index2)类型 type3) 字段 Filed4)映射 mapping5)文档 document6)集群 cluster7)节点 node8)分片和复制 shards & replicasDocker 中安装 ElasticSearch下载 ElasticSearch 和 Kibana配置启动 ElasticSearch单节点多节点启动开启 …

VMware Avi Load Balancer 31.1.1 发布 - 多云负载均衡平台

VMware Avi Load Balancer 31.1.1 发布 - 多云负载均衡平台VMware Avi Load Balancer 31.1.1 发布 - 多云负载均衡平台 应用交付:多云负载均衡、Web 应用防火墙和容器 Ingress 服务 请访问原文链接:https://sysin.org/blog/vmware-avi-load-balancer-31/ 查看最新版。原创作品…

Angular 中依赖注入问题造成 Observable 订阅不更新

这是园子博客后台从 angular 15 升级到 angular 19 后遇到的一个问题。博客后台「随笔 」的侧边栏会显示随笔的分类列表 ,通过这个列表的上下文菜单可以修改分类名称,升级后测试时发现一个问题,修改分类名称后分类列表没有随之更新这是园子博客后台从 angular 15 升级到 ang…

极紫外光刻掩模上三维图案的严格模拟(下)

1D线掩模:全3D计算域 首先,使用包含吸收体结构和多层反射镜的3D计算域重新审视EUV线掩模。图5显示了对几何体进行离散化的网格(使用网格生成器JCMgeo自动生成)。对于三维设置,网格由棱柱形元素组成(而不是二维设置中的三角形元素)。使用不同的空间网格对相同的物理设置进…

极紫外光刻掩模上三维图案的严格模拟(上)

对具有二维周期性吸收体图案的极紫外光刻掩模的光散射进行了模拟。在一项详细的收敛研究中,表明在相对较大的3D计算域以及存在侧壁角度和拐角圆角的情况下,可以获得准确的结果。 材料和参数设置 所研究的结构由多层反射镜上的吸收器堆叠组成(共120层)。图1显示了几何形状的…

如何在M芯片的Mac上爽玩原神

如何在M芯片的Mac上爽玩原神 【热点速递】苹果震撼发布全新M4 Mac mini,国补福利下惊喜价如何在M芯片的Mac上爽玩原神【热点速递】苹果震撼发布全新M4 Mac mini,国补福利下惊喜价仅约3500元!这不仅是一次办公体验的全新升级,更是对高效能与性价比完美融合的一次致敬。想象一…

macOS安装软件过程中常见几种报错的解决办法

macOS安装软件过程中常见几种报错的解决办法 对于刚使用 macOS 或者在更新系统后尝试运行应用对于刚使用 macOS 或者在更新系统后尝试运行应用时遇到问题的用户,可能会看到以下几种错误提示:xxx已损坏,无法打开,你应该将它移到废纸篓打不开 xxx,因为它来自身份不明的开发者…

我来告诉你怎么在macOS上畅玩金铲铲之战

我来告诉你怎么在macOS上畅玩金铲铲之战 ❝ 天选福星,灵蛇献瑞,《金铲铲之战》“天选福星”赛季好我来告诉你怎么在macOS上畅玩金铲铲之战天选福星,灵蛇献瑞,《金铲铲之战》“天选福星”赛季好运上线!请接收这份来自《金铲铲之战》的新春邀约——“天选福星”正式回归,羁…

4本书推荐《AI芯片开发核心技术详解》、《智能汽车传感器:原理设计应用》、《TVM编译器原理与实践》、《LLVM编译器原理与实践》,谢谢

4本书推荐《AI芯片开发核心技术详解》、《智能汽车传感器:原理设计应用》、《TVM编译器原理与实践》、《LLVM编译器原理与实践》由清华大学出版社资深编辑赵佳霓老师策划编辑的新书《AI芯片开发核心技术详解》已经出版,京东、淘宝天猫、当当等网上,相应陆陆续续可以购买。该…

Cain的2024小记

2024の总结在清水中放一块糖,不会太甜 但放一勺醋,就会很酸 人不能因为一件事高兴一整年 却能因为一个创伤郁郁终身 痛苦给人的刺激总是远远大于快乐 所以人们宁可不得到,也不愿失去 渐渐的 不喜不悲又到了一年一度的破壳日,祝我生日快乐的同时,写下拖延许久的年度总结,剖…

【Windows内核】早期级联注入:Windows 进程创建、Early bird APC 注入和 EDR 预加载

一、介绍 在这篇博客文章中,我们介绍了一种名为早期级联注入的新型进程注入技术,探讨了 Windows 进程创建,并识别了几种端点检测和响应系统(EDR)如何初始化其进程内检测能力。这种新的早期级联注入技术针对进程创建的用户模式部分,结合了众所周知的 Early bird APC 注入技…

CODEFORCE DIV2 NO.996(好社畜的场次名)

这一次的博客其实早就应该发布了,但是当时急着回家睡觉,于是就直接把博客的编辑页面给关闭了,于是没有保存,完成了3/4的博客就这样没有了,对,所以这件事启示了我们写完博客一定要保存好草稿,不然就是唐完了。问就是唐龙 首先是这场比赛的评价,当时真的是犯蠢了,感觉是…