Rust多线程任务,发现有些线程一直获取不到锁【已解决】

问题描述

  项目中用到rust,其中在多线程中用到了同一个对象的锁,然而发现其中一个线程一直拿不到这个锁。

解决过程

  我先是在线程A中加入了sleep方法,这样做的效果就是,比最初好一些,但是拿到锁还是要较长时间,后面考虑这种解决办法并不稳妥,因为线程如果追求高性能,那么sleep的办法来让出资源,感觉不太好。

  进一步排查代码发现,在拿到锁之后,一直到整个线程停止才释放锁,而我代码里使用到该数据的时间没有那么久。为了避免长时间持有锁,将获取锁和使用锁的代码放在一个独立的作用域中:

rust 复制代码
let A;
{
//获取锁
A=..  //将获取到的数据赋值
}

  这样在离开该作用域时,锁会自动被释放,我们可以在作用域中将锁内数据取出,然后克隆一份使用。

  欢迎交流~

相关推荐
程序员爱钓鱼7 小时前
Rust Vec 动态数组详解:创建、增删、遍历与排序
前端·后端·rust
_abab7 小时前
Rust重塑系统编程:从Linux内核到AI推理引擎的2026全景解析
linux·人工智能·rust
doiito17 小时前
【Agent Harness】Gliding Horse 高级认知优化:让 Agent 的“大脑”和“免疫系统”真正协同
ai·rust·架构设计·系统设计·ai agent
程序员爱钓鱼1 天前
Rust String 与 &str 详解:字符串所有权、借用与转换
前端·后端·rust
段一凡-华北理工大学2 天前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
大卫小东(Sheldon)2 天前
小鹤音形词典:一个用 Rust 写的离线编码查询桌面工具
ai·rust
就业发动机2 天前
我用 Tauri 做了一个约 1.5 MB 的开源屏幕标注工具:MarkerOn
vue.js·rust
2601_954526752 天前
【硬核架构】打破 IT 与 OT 的数据孤岛!基于 Rust 异步协程的工业 IoT 网关重构,兼谈顶级自动化智能仪表厂家选型指南
物联网·架构·rust
white_ant2 天前
17- 文本统计/处理工具使用指南
rust·个人开发·tauri
独孤留白2 天前
Rust 类型转换全景指南 —— 从引用转换到序列化
rust