当前位置: 首页 > news >正文

Rust 内部可变性的访问器模式

内部可变性的访问器模式(Interior Mutability Accessor Pattern)

我有一个类,类内部有一个被 Mutex 保护的字段,想访问这个字段,最简单的方式是为类实现方法,在方法内部实现访问此字段的逻辑。

但如果想让整个架构“模块化”,不希望把访问字段的具体逻辑放在类内部,怎么办呢?

第一时间想到的是把这个字段暴露给外部,比如给类实现一个方法返回 &Mutex<inner_mut> 类型。但这样就把锁暴露给外部了,管理锁的逻辑也暴露给外部了。外部调用不方便(还需要释放锁),也不安全。

这时候可以用到“内部可变性的访问器模式”,为类加入如下的两个函数,函数内部掌控持有锁的周期,函数以闭包为参数,闭包在类(模块)外部实现,定义访问被保护字段的具体逻辑。

/// Access vm_ctx mutably through a closure
pub fn with_vm_ctx_mut<F, R>(&self, f: F) -> R
whereF: FnOnce(&mut VmContext) -> R,
{let mut inner = self.inner.inner_mut.lock();f(&mut inner.vm_ctx)
}// 调用处的代码
cur_vcpu.with_vm_ctx_mut(|vm_ctx| {vm_ctx.gic_save_context(); # vcpu 模块外部的代码,架构相关的代码
});

http://www.dtcms.com/a/618204.html

相关文章:

  • ThinkPHP8学习篇(十二):模型关联(二)
  • 药品行业做网站windows wordpress
  • 【读代码】LightRAG轻量级知识图谱增强检索系统的架构与实现
  • arm架构设备使用FISCO BCOS上搭建多机区块链网络
  • 【Android】LRU 与 Android 缓存策略
  • 使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 26--数据驱动--参数化处理 Excel 文件 3
  • 第41节:第三阶段总结:打造一个AR家具摆放应用
  • 建设网站流程2022年最新新闻播报稿件
  • 网站地图的作用长沙网站开发设计
  • 【读代码】最新端侧TTS模型NeuTTS-Air
  • 做装修网站多少钱四川成都住建局官网
  • Microsoft 远程桌面app,支持挂机宝,云主机服务器
  • 基于MATLAB的粒子群优化(PSO)算法对25杆桁架结构进行优化设计
  • 智能驾驶:从感知到规控的自动驾驶系统全解析
  • 练习项目:基于 LangGraph 和 MCP 服务器的本地语音助手
  • 在 VMware 的 Ubuntu 22.04 虚拟机和 Windows 主机之间设置共享剪贴板
  • 淄博专业网站建设哪家专业公司装修设计工程
  • 金融网站的设计中和阗盛工程建设有限公司网站
  • 《JavaScript基础-Day.4》笔记总结
  • 关于C++中的预编译指令
  • 做网站的重要性深圳程序开发
  • 其他落地手册:facebook实现与音视频剖析
  • 建站方法移动课程播放网站建设多少钱
  • ZJUCTF2025(预赛+决赛)-我的writeup
  • 2025.11.16 AI快讯
  • Java分治算法题目练习(快速/归并排序)
  • Python 生信进阶:Biopython 库完全指南(序列处理 + 数据库交互)
  • 基于单片机的功率因数校正与无功补偿系统设计
  • 【计算机网络笔记】第六章 数据链路层
  • 网站开发工作前景电商哪个平台销量最好