1. Available versions and reference materials 2. ValueTask<TResult> and Task 3. How does the compiler co…
分类:C#多线程与异步
C# 多线程(18):一篇文章就理解async和await
前言 async await 从以往知识推导 创建异步任务 创建异步任务并返回Task 异步改同步 说说 await Task 说说 async Task<TResult> 同步异步? Task封装异步任务 …
C# 多线程(17):小总结
前言 本篇内容是小总结和过渡,看完这篇后,就要开始继续学习 C# 多线程中的知识点啦~。 前面,经过 16 篇的学习,我们学习了多线程、锁、线程池、任务、同步、异步等知识,还没有使用到 async、await 这些关键字…
C#多线程(16):手把手教你撸一个工作流
前言 节点 Then Parallel Schedule Delay 试用一下 顺序节点 并行任务 编写工作流 接口构建器 工作流构建器 依赖注入 实现工作流解析 [……] 继续阅读
C#多线程(15):任务基础③
TaskAwaiter 延续的另一种方法 另一种创建任务的方法 实现一个支持同步和异步任务的类型 Task.FromCanceled() 如何在内部取消任务 Yield 关键字 补充知识点 任务基础一共三篇,本篇是第三篇…
C#多线程(14):任务基础②
判断任务状态 再说父子任务 组合任务/延续任务 复杂的延续任务 并行(异步)处理任务 并行(同步)处理任务 并行任务的 Task.WhenAny 并行任务状态 循环中值变化问题 定时任务 TaskScheduler 类 …
C#多线程(13):任务基础①
多线程编程 多线程编程模式 探究优点 任务操作 两者创建任务的方式 Task.Run() 创建任务 取消任务和控制任务的创建 任务返回结果以及异步获取返回结果 捕获任务异常 全局捕获任务异常 [………
C#多线程(12):线程池
线程池 ThreadPool 常用属性和方法 线程池说明和示例 线程池线程数 线程池线程数说明 不支持的线程池异步委托 任务取消功能 计时器 [……] 继续阅读
C#多线程(11):线程等待
前言 volatile 关键字 三种常用等待 再说自旋和阻塞 SpinWait 结构 属性和方法 自旋示例 新的实现 SpinLock 结构 属性和方法 示例 等待性能对比 [……] 继续阅读
C#多线程(10):读写锁
本篇的内容主要是介绍 ReaderWriterLockSlim 类,来实现多线程下的读写分离。 ReaderWriterLockSlim ReaderWriterLock 类:定义支持单个写线程和多个读线程的锁。 Rea…
C#多线程(9):多阶段并行线程
前言 这一篇,我们将学习用于实现并行任务、使得多个线程有序同步完成多个阶段的任务。 应用场景主要是控制 N 个线程(可随时增加或减少执行的线程),使得多线程在能够在 M 个阶段中保持同步。 线程工作情况如下: 我们接下来…
C#多线程(8):线程完成数
解决一个问题 CountdownEvent 类 构造函数和方法 示例 [……] 继续阅读
C#多线程(7):手动线程通知
- [区别与示例](#区别与示例) ManualResetEvent 类 ManualResetEventSlim 区别与示例 AutoResetEvent 和 ManualResetEvent 十分相似。两者之间的区别…
C#多线程(6):自动线程通知
AutoRestEvent 类 常用方法 一个简单的示例 解释一下 复杂一点的示例 解释 [……] 继续阅读
C#多线程(5):资源池限制
Semaphore 类 示例 示例说明 信号量 SemaphoreSlim类 示例 区别 [……] 继续阅读
C#多线程(4):进程同步Mutex类
Mutex 类 构造函数和方法 系统只能运行一个程序的实例 解释一下上面的示例 接替运行 进程同步示例 另外 [……] 继续阅读
C#多线程系列(3):原子操作
本章主要讲述多线程竞争下的原子操作。 知识点 竞争条件 线程同步 CPU时间片和上下文切换 阻塞 内核模式和用户模式 Interlocked类 1,出现问题 2,Interlocked.Increment() 3,Int…
C#多线程系列(2):lock和Monitor
1,Lock lock 原型 lock 编写实例 2,Monitor 怎么用呢 解释一下 示例 设置获取锁的时效 [……] 继续阅读
C#多线程系列(1):Thread
目录 1,获取当前线程信息 2,管理线程状态 2.1 启动与参数传递 2.1.1 ParameterizedThreadStart 2.1.2 使用静态变量或类成员变量 2.1.3 委托与Lambda 2.2 暂停与阻塞…