Rust基础拾遗--并发和异步编程

2024-02-15 23:28

本文主要是介绍Rust基础拾遗--并发和异步编程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Rust基础拾遗

  • 前言
  • 1.并发
  • 2.异步编程


前言

   通过Rust程序设计-第二版笔记的形式对Rust相关重点知识进行汇总,读者通读此系列文章就可以轻松的把该语言基础捡起来。


1.并发

  1. 为什么一些看似正确的多线程惯用法却根本不起作用?
    与“内存模型”有关

  2. 你最终会找到一种自己用起来顺手且不会经常出错的并发惯用法。

  3. 系统程序员常用的方法包括以下几种。

  • 具有单一作业的后台线程,需要定期唤醒执行作业。

  • 通过任务队列与客户端通信的通用工作池。

  • 管道,数据在其中从一个线程流向下一个线程,每个线程只负责一部分工作。

  • 数据并行处理,假设整个计算机只进行一次主要的大型计算,将这次计算分成 n 个部分且在 n 个线程上运行,并期望机器的所有 n 个核心都能立即开始工作。

  • 同步复杂对象关系,其中多个线程可以访问相同的数据,并且使用基于互斥锁等底层原语的临时加锁方案避免了竞争。

  • 原子化整数操作允许多个核心借助一个机器字大小的字段传递信息来进行通信。(数据通常是指针)

  1. Rust的3种 线程的方法。
  • 分叉与合并(fork-join)并行
  • 通道
  • 共享可变状态

1.1 分叉与合并并行
1.1.1 启动与联结
1.1.2 跨线程错误处理
1.1.3 跨线程共享不可变数据
1.1.4 rayon
1.1.5 重温曼德博集
1.2 通道
1.2.1 发送值
1.2.2 接收值
1.2.3 运行管道
1.2.4 通道的特性与性能
1.2.5 线程*:Send与Sync
1.2.6 绝大多数迭代器能通过管道传给通道
1.2.7 除管道之外的用法
1.3 共享可变状态
1.3.1 什么是互斥锁
1.3.2 Mutex
1.3.3 mut与互斥锁
1.3.4 为什么互斥锁不是“银弹”
1.3.5 死锁
1.3.6 “中毒”的互斥锁
1.3.7 使用互斥锁的多消费者通道
1.3.8 读/写锁(RwLock )
1.3.9 条件变量(Condvar)
1.3.10 原子化类型
1.3.11 全局变量

2.异步编程

2.1.1 Future
2.1.2 异步函数与await表达式
2.1.3 从同步代码调用异步函数:block_on
2.1.4 启动异步任务
2.1.5 异步块
2.1.6 从异步块构建异步函数
2.1.7 在线程池中启动异步任务
2.1.8 你的Future实现Send了吗
2.1.9 长时间运行的计算:yield_now与spawn_blocking
2.1.10 对几种异步设计进行比较
2.1.11 一个真正的异步HTTP客户端
2.2 异步客户端与服务器
2.2.1 Error类型与Result类型
2.2.2 协议
2.2.3 获取用户输入:异步流
2.2.4 发送数据包
2.2.5 接收数据包:更多异步流

2.2.6 客户端的main函数
2.2.7 服务器的main函数
2.2.8 处理聊天连接:异步互斥锁
2.2.9 群组表:同步互斥锁
2.2.10 聊天组:tokio的广播通道
2.3 原始Future与执行器:Future什么时候值得再次轮询
2.3.1 调用唤醒器:spawn_blocking
2.3.2 实现block_on
2.4 固定(Pin)
2.4.1 Future生命周期的两个阶段
2.4.2 固定指针
2.4.3 Unpin特型
2.5 什么时候要用异步代码

这篇关于Rust基础拾遗--并发和异步编程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/712851

相关文章

MySQL的JDBC编程详解

《MySQL的JDBC编程详解》:本文主要介绍MySQL的JDBC编程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、前置知识1. 引入依赖2. 认识 url二、JDBC 操作流程1. JDBC 的写操作2. JDBC 的读操作总结前言本文介绍了mysq

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2

redis-sentinel基础概念及部署流程

《redis-sentinel基础概念及部署流程》RedisSentinel是Redis的高可用解决方案,通过监控主从节点、自动故障转移、通知机制及配置提供,实现集群故障恢复与服务持续可用,核心组件包... 目录一. 引言二. 核心功能三. 核心组件四. 故障转移流程五. 服务部署六. sentinel部署

Python异步编程之await与asyncio基本用法详解

《Python异步编程之await与asyncio基本用法详解》在Python中,await和asyncio是异步编程的核心工具,用于高效处理I/O密集型任务(如网络请求、文件读写、数据库操作等),接... 目录一、核心概念二、使用场景三、基本用法1. 定义协程2. 运行协程3. 并发执行多个任务四、关键

从基础到进阶详解Python条件判断的实用指南

《从基础到进阶详解Python条件判断的实用指南》本文将通过15个实战案例,带你大家掌握条件判断的核心技巧,并从基础语法到高级应用一网打尽,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录​引言:条件判断为何如此重要一、基础语法:三行代码构建决策系统二、多条件分支:elif的魔法三、

Python WebSockets 库从基础到实战使用举例

《PythonWebSockets库从基础到实战使用举例》WebSocket是一种全双工、持久化的网络通信协议,适用于需要低延迟的应用,如实时聊天、股票行情推送、在线协作、多人游戏等,本文给大家介... 目录1. 引言2. 为什么使用 WebSocket?3. 安装 WebSockets 库4. 使用 We

AOP编程的基本概念与idea编辑器的配合体验过程

《AOP编程的基本概念与idea编辑器的配合体验过程》文章简要介绍了AOP基础概念,包括Before/Around通知、PointCut切入点、Advice通知体、JoinPoint连接点等,说明它们... 目录BeforeAroundAdvise — 通知PointCut — 切入点Acpect — 切面

Spring Security 前后端分离场景下的会话并发管理

《SpringSecurity前后端分离场景下的会话并发管理》本文介绍了在前后端分离架构下实现SpringSecurity会话并发管理的问题,传统Web开发中只需简单配置sessionManage... 目录背景分析传统 web 开发中的 sessionManagement 入口ConcurrentSess

从基础到高阶详解Python多态实战应用指南

《从基础到高阶详解Python多态实战应用指南》这篇文章主要从基础到高阶为大家详细介绍Python中多态的相关应用与技巧,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、多态的本质:python的“鸭子类型”哲学二、多态的三大实战场景场景1:数据处理管道——统一处理不同数据格式