(原创)[开源][.Net Standard 2.0] SimpleMMF (进程间通信框架)更新 v1.1,极低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的占用与变化。
五、结语
技术没有新旧之分同,只有合不合适之分。
感谢的大家的观看与学习,如有错误欢迎批评指正。
(原创)[开源][.Net Standard 2.0] SimpleMMF (进程间通信框架)更新 v1.1,极低CPU占用的更多相关文章
- 开源一个基于dotnet standard的轻量级的ORM框架-Light.Data
还在dotnet framework 2.0的时代,当时还没有EF,而NHibernate之类的又太复杂,并且自己也有一些特殊需求,如查询结果直接入表.水平分表和新增数据默认值等,就试着折腾个轻量点O ...
- 原创开源项目HierarchyViewer for iOS 2.1 Beta新功能介绍
回顾 HierarchyViewer for iOS是我们发布的一个开源项目,采用GPL v3.0协议. HierarchyViewer for iOS可以帮助iOS应用的开发和测试人员,在没有源代码 ...
- .NET Core 2.0及.NET Standard 2.0
.NET Core 2.0的发布时间,.NET Core 2.0预览版及.NET Standard 2.0 Preview大概在5月中旬或下旬发布. .NET Core 2.0正式版本发布时间大约在Q ...
- 微软Build 2017第二天 .NET Standard 2.0 Preview 的客户端跨平台
微软公司一年一度的开发者大会,即“Microsoft Build 2017”在总部西雅图正式开幕.按照官方安排,本次大会将持续 3 天,主题围绕微软公司各项最新技术成果的展示和研讨,包括与微软相关的产 ...
- .NET Standard 2.0 特性介绍和使用指南
.NET Standard 2.0 发布日期:2017年8月14日 公告原文地址 前言 早上起来.NET社区沸腾了,期待已久的.NET Core 2.0终于发布!根据个人经验,微软的产品一般在2.0时 ...
- [C#] .NET Core/Standard 2.0 编译时报“CS0579: Duplicate 'AssemblyFileVersionAttribute' attribute”错误的解决办法
作者: zyl910 一.缘由 当创建 .NET Core/Standard 2.0项目时,VS不会像.NET Framework项目一样自动生成AssemblyInfo.cs文件. 而且,若是手工在 ...
- 【原创开源】网络版二代双通道示波器开源发布,支持电脑,手机和Pad等各种OS平台访问
前言感谢大家的支持,提前奉上今年的国庆福利. 一代示波器发布于3年前,去年年底的时候发布了二代示波器,软件性能已经比较强劲,但依然有值得升级改进的地方,经过今年这半年多努力,在二代示波器的基础上再推出 ...
- .NET Standard 2.0正式发布了
亦可赛艇 前天(2017年8月14日),.NET Standard 2.0正式版终于发布了,与之相配套的.NET Core 2.0也同时正式发布,真是令人振奋. 详情请看:https://blogs. ...
- .NET Core 2.0及.NET Standard 2.0 Description
NET Core 2.0的发布时间,.NET Core 2.0预览版及.NET Standard 2.0 Preview大概在5月中旬或下旬发布. .NET Core 2.0正式版本发布时间大约在Q3 ...
- 安装.Net Standard 2.0, Impressive
此版本的.NET Standard现在支持大约33K的API,与.NET Standard 1.x支持的14K API相比.好的是大部分API来自.NET Framework.这使得生活更容易将代码移 ...
随机推荐
- PS命令显示进程数,清理僵尸进程
显示系统上所有进程的进程树 ps -ef --forest 显示给定进程的进程树 -C:Select by command name.这个命令会把name指定进程的所有子进程显示出来 [root@lo ...
- Nuxt.js 应用中的 webpack:configResolved事件钩子
title: Nuxt.js 应用中的 webpack:configResolved事件钩子 date: 2024/11/21 updated: 2024/11/21 author: cmdragon ...
- SpringFlex框架搭建
或者参考http://limingnihao.iteye.com/blog/830409.使用Eclipse的Maven构建SpringMVC项目. 1.1 简单介绍 Spring是一个轻量级的控制反 ...
- highcharts中的环形图
环形图如下效果: 代码: that.options = { chart: { type: 'pie', backgroundColor: 'transparent', color: '#fff', / ...
- HZNUOJ-1503公路乘车--DP
题目传送门:https://acm.hznu.edu.cn/OJ/problem.php?id=1503 题解:我们发现后一状态由前一状态决定,即后一公里由前面十公里的状态决定,经典 dp,我们直接列 ...
- Postgresql——postgis安装
PostGIS安装 PostGIS 是一个开源数据库拓展,它为 PostgreSQL 数据库增加了对地理空间数据的支持.PostGIS 使得空间数据的存储.查询和分析变得简单高效. PostGIS 是 ...
- GraphQL Part II: 中间件
GraphQL Part II: 中间件 如果您熟悉 ASP.NET Core 的中间件,您可能注意到在我们上一篇博客中我们已经拥有了一个中间件.在初始的空白应用中,中间件的职责是返回 hello W ...
- 中电金信:从“互联网+”到“人工智能+”,TA也藏不住了!
两会期间,人工智能频上头条 其中"人工智能+"首次进入2024政府工作报告 为人工智能产业的发展注入一剂强心针 从"互联网+"到"人工智能+& ...
- JEP 457 Java 22:Class-File API
查看 Java 22:Class-File API | 作者:Ben Weidig | 2024 年 4 月 | Medium 终于有一个和 DLR 相当的官方库了.
- CMake构建学习笔记19-OpenSSL库的构建
1. 概述 OpenSSL是一个开源的加密工具包和库,主要实现了安全套接字层(SSL)和传输层安全(TLS)协议,以及各种加密算法.数字签名.消息摘要.加密证书等功能.这个库可以说是Web开发尤其是H ...