Rust 单线程环境中的可变引用

问题描述

关于单线程环境中的可变引用,我有一个非常具体的问题,我会尽量解释清楚。我有一个在具有哈希图的单个线程中运行的服务。这个哈希图只能从那个单线程访问。访问哈希图是在以下情况下完成的。

  1. 基于另一个线程发送的信号(我不确定实际实现),将在包含哈希图的线程中触发回调。当该回调发生时,我需要可变地访问哈希图并添加一个条目。 (事件A)

  2. 基于周期性事件(如滴答),在包含哈希图的线程中触发另一个回调。当该回调发生时,我想清空哈希图并在 http 请求中发送数据。 (http 请求与问题无关)(事件 B)

在这两种情况下,hashmap 只能从包含服务的线程访问。但我担心的是,在这两种情况下,我都需要有可变引用,而且我知道有 1 个以上的可变引用会导致恐慌。但由于这是单线程的,我觉得这不会有问题。但我不确定单线程并发是如何工作的,以及上下文切换是如何完成的。(甚至可能一次执行一件事情,其他等待或暂停的任务在某处保存了一个上下文?)。因此,例如,假设事件 A 被执行,在此过程中它将被暂停并且事件 B 发生。是否有可能来自事件 A 的可变引用被临时存储在某处,然后当事件 B 被触发时,当 B 尝试对哈希图具有可变引用时会发生恐慌?

PS - 也许这是一个愚蠢的问题。我是低级编程的新手,也是 Rust 的新手。如果有什么不清楚的,请发表评论,我会提供更多信息。如果您能提供描述性清晰的答案,我将不胜感激,因为我对这些东西还不熟悉。还有什么理由使用 RefCell 吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...