首页 > 系统相关 >【c#】内存共享

【c#】内存共享

时间:2024-10-17 08:58:55浏览次数:8  
标签:映射 c# 视图 MemoryMappedFile 内存 共享 mmf accessor

类:MemoryMappedFile

OpenExisting

打开指定名称的内存映射文件,不存在的化报异常FileNotFoundException

private bool IsMMFExisting(string mmfName)
{
    try
    {
        var mmf = MemoryMappedFile.OpenExisting(mmfName);
        if (mmf == null) return false;
        return true; 
    }
    catch (Exception ex)
    {
        if (ex.ToString().Split(':')[0].Split('.')[2] == "FileNotFoundException")
            return false;
    }
    return false;
}

CreateOrOpen

创建或者打开一个内存映射文件,如果是打开,会忽略容量

参数:

1、mapName内存映射文件名称

2、capacity容量,分配给文件的最大字节

3、access允许的访问类型(枚举,ReadWrite)

返回值:

MemoryMappedFile(类型) :具有特征值的内存映射文件

//打开名为“mm”的内存映射文件
MemoryMappedFile mmf = MemoryMappedFile.CreateOrOpen("mm",1024,MemoryMappedFileAccess.ReadWrite);

CreateViewAccessor

创建映射到内存映射文件的视图

参数:

1、offset启动此视图的字节位置

2、size视图的大小

3、access允许的访问类型(枚举,默认ReadWrite)

返回:

MemoryMappedViewAccessor(类型):可以随机访问的内存块

//创建一个视图,映射内存映射文件mmf,这个视图可以编辑(且会同步到内存映射文件)
MemoryMappedViewAccessor accessor = mmf.CreateViewAccessor(0, 1024);
MemoryMappedViewAccessor accessor = mmf.CreateViewAccessor(0, 1024,MemoryMappedFileAccess.ReadWrite);

属性和方法

//1、CanRead属性
accessor.CanRead == true;//视图可读
//2、Read、Write方法
int colorSize = Marshal.SizeOf(typeof(MyColor));
MyColor color;
for (long i = 0; i < 1024; i += colorSize)//按MyColor大小读写视图1024容量的所有内容
{
    accessor.Read(i, out color);//读内存,读出的结果color
    color.Brighten(10);//修改
    accessor.Write(i, ref color);//再写入
}

标签:映射,c#,视图,MemoryMappedFile,内存,共享,mmf,accessor
From: https://www.cnblogs.com/sitarblogs/p/18471354

相关文章

  • 【Docker】Harbor 私有仓库和管理
    目录一、搭建本地私有仓库二、harbor简介(特性、构成、架构的数据流向)2.1 什么是Harbor2.2 Harbor的特性2.3 Harbor的构成2.4Harbor的工作原理(运行流程) 三、harbor部署以及配置文件1.部署Docker-Compose服务2.部署Harbor服务 3.启动Harbor4.查看Harb......
  • 集合论(ZFC)之基数(Cardinality)浅析
    直观感受(Intuition)与核心思想(CoreIdea)        集合的基数(Cardinality)是衡量集合的大小,也就是集合中元素的个数。但是,由于无限集与超限集的存在,因此,单纯用自然数去描述集合的大小是不可行的。自然数只能描述有限集的大小。所以,需要一个新的概念去描述集合的大小,那就是......
  • Office 2024 for mac 安装、激活教程
    声明本教程旨在学习分享。安装要求macOS12.0或更高版本,64位处理器安装步骤1、安装Office2024formac安装包;2、安装Office2024formac激活软件包;安装Office2024formac①下载Office2024formac,下载地址-点击下载②安装下载好的Office......
  • 10.16 CW 模拟赛 D. 迷宫(maze)
    题面传统T4找不到原题挂个pdf题面下载算法不容易想到把出发点,有被困同伴的人称作关键点那么只需要求出关键点之间,关键点到任意一个终点的最短距离,然后在搜索即可求解dijkstra算法求单源最短路\(n>10^3\),显然会T飞dijkstra算法求单源最短路\(\mathcal{O......
  • sicp每日一题[2.47]
    Exercise2.47Herearetwopossibleconstructorsforframes:(define(make-frameoriginedge1edge2)(listoriginedge1edge2))(define(make-frameoriginedge1edge2)(consorigin(consedge1edge2)))Foreachconstructorsupplytheappropriate......
  • 内核提供的通用I2C设备驱动I2C-dev.c分析:file_ops篇
    往期内容I2C子系统专栏:I2C(IIC)协议讲解-CSDN博客SMBus协议详解-CSDN博客I2C相关结构体讲解:i2c_adapter、i2c_algorithm、i2c_msg-CSDN博客内核提供的通用I2C设备驱动I2c-dev.c分析:注册篇总线和设备树专栏:总线和设备树_憧憬一下的博客-CSDN博客设备树与Linux内核设备......
  • Office 2021 for mac 安装、激活教程
    安装要求OSX10.12或更高版本,64位处理器安装步骤1、安装Office2021formac安装包;2、安装Office2021formac激活软件包;安装Office2021formac①下载Office2021formac,下载地址-点击下载②安装下载好的Office2021formac激活Office202......
  • Production Tracking是什么 ?
    【大家好,我是唐Sun,唐Sun的唐,唐Sun的Sun。一站式数智工厂解决方案服务商】ProductionTracking,即生产跟踪,是对生产过程进行全面、实时监控和记录的一种管理手段。它涵盖了从原材料采购、生产计划制定、生产工序执行,到产品最终完成的整个生产流程。通过各种技术手段,如传感器、......
  • 机器学习面试笔试知识点-线性回归、逻辑回归(Logistics Regression)和支持向量机(SVM)
    机器学习面试笔试知识点-线性回归、逻辑回归LogisticsRegression和支持向量机SVM一、线性回归1.线性回归的假设函数2.线性回归的损失函数(LossFunction)两者区别3.简述岭回归与Lasso回归以及使用场景4.什么场景下用L1、L2正则化5.什么是ElasticNet回归6.ElasticNet回归......
  • weakmap、weakset、内存泄漏
    weakmap、weakset都是ES6的新增的数据结构WeakMapWeakMap对象是键值对的集合,提供了一种键值对的存储机制。它的键必须是对象类型,值可以是任意类型。它的键被弱保持,也就是说,当其键所指对象没有其他地方引用的时候,它会被GC回收掉。WeakMap提供的接口与Map相同。与Map......