如何解决Rust 单线程环境中的可变引用
关于单线程环境中的可变引用,我有一个非常具体的问题,我会尽量解释清楚。我有一个在具有哈希图的单个线程中运行的服务。这个哈希图只能从那个单线程访问。访问哈希图是在以下情况下完成的。
-
基于另一个线程发送的信号(我不确定实际实现),将在包含哈希图的线程中触发回调。当该回调发生时,我需要可变地访问哈希图并添加一个条目。 (事件A)
-
基于周期性事件(如滴答),在包含哈希图的线程中触发另一个回调。当该回调发生时,我想清空哈希图并在 http 请求中发送数据。 (http 请求与问题无关)(事件 B)
在这两种情况下,hashmap 只能从包含服务的线程访问。但我担心的是,在这两种情况下,我都需要有可变引用,而且我知道有 1 个以上的可变引用会导致恐慌。但由于这是单线程的,我觉得这不会有问题。但我不确定单线程并发是如何工作的,以及上下文切换是如何完成的。(甚至可能一次执行一件事情,其他等待或暂停的任务在某处保存了一个上下文?)。因此,例如,假设事件 A 被执行,在此过程中它将被暂停并且事件 B 发生。是否有可能来自事件 A 的可变引用被临时存储在某处,然后当事件 B 被触发时,当 B 尝试对哈希图具有可变引用时会发生恐慌?
PS - 也许这是一个愚蠢的问题。我是低级编程的新手,也是 Rust 的新手。如果有什么不清楚的,请发表评论,我会提供更多信息。如果您能提供描述性清晰的答案,我将不胜感激,因为我对这些东西还不熟悉。还有什么理由使用 RefCell 吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。