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

rust 多线程分发数据

use std::sync::{Arc, Mutex};
use std::collections::VecDeque;
use std::thread::{self, sleep};
use rand::Rng;
use std::time::Duration;fn main() {let list: Arc<Mutex<VecDeque<String>>> = Arc::new(Mutex::new(VecDeque::new()));// 创建修改线程let list_clone = list.clone();let mutator = thread::spawn(move || {let mut rng = rand::thread_rng();loop {let random_operation = rng.gen_range(0..3); // 随机选择操作:0-添加到前端,1-添加到后端,2-随机删除let value = rng.gen_range(1..101).to_string(); // 生成随机数作为值let mut list_guard = list_clone.lock().unwrap(); // 获取互斥锁的所有权match random_operation {0 => list_guard.push_front(value.clone()), // 添加到前端1 => list_guard.push_back(value.clone()),  // 添加到后端2 => {if let Some(_) = list_guard.pop_front() {} // 尝试从前端删除}_ => {}}drop(list_guard); // 显式释放锁thread::sleep(Duration::from_millis(100)); // 模拟操作之间的延迟}});// 创建查询线程let list_clone = list.clone();let observer = thread::spawn(move || {loop {let list_guard = list_clone.lock().unwrap(); // 获取互斥锁的所有权println!("Current state of the deque: {:?}", list_guard);drop(list_guard); // 显式释放锁thread::sleep(Duration::from_millis(500)); // 模拟查询之间的延迟}});// 这里我们让主线程等待,直到两个线程都完成let _ = mutator.join();let _ = observer.join();}
http://www.lryc.cn/news/376268.html

相关文章:

  • CentOS 7x 使用Docker 安装oracle11g完整方法
  • DDP算法之线性化和二次近似(Linearization and Quadratic Approximation)
  • Shellcode详解
  • sherpa-onnx说话人识别+语音识别自动开启(VAD)+语音识别Python API
  • 提取人脸——OpenCV
  • python数据可视化:在图形中添加注释matplotlib.pyplot.annotate()
  • IDEA debug 调试Evaluate Expression应用
  • 04-echarts-立体柱状图扩展
  • HTML5 Web Workers: 异步编程的强大力量
  • Flutter第十二弹 Flutter多平台运行
  • 30天学会QT---------------大项目之在线考试系统
  • 搜维尔科技:力反馈主手—手术机器人应用〈腔镜手术机器人平台—进入手术室动物实验〉
  • 缓存技术实战[一文讲透!](Redis、Ecache等常用缓存原理介绍及实战)
  • 初识es(elasticsearch)
  • AI在线免费视频工具2:视频配声音
  • Kafka 如何保证消息顺序及其实现示例
  • 内存分配器性能优化
  • 《OKR工作法》读书笔记
  • 2025年计算机毕业设计题目参考-简单容易
  • 3.8. 马氏链-一般状态空间的马氏链(Harris链)
  • Python8 使用结巴(jieba)分词并展示词云
  • python中scrapy
  • 基础语法总结 —— Python篇
  • 数据库系统概述选择简答概念复习
  • template标签
  • WPF 程序 分布式 自动更新 登录 打包
  • 视频汇聚安防综合管理平台EasyCVR支持GA/T 1400视图库标准及设备接入配置
  • pgsql给单独数据库制定账号权限
  • 【Docker安装】Ubuntu系统下部署Docker环境
  • Flink Kafka获取数据写入到MongoDB中 样例