《c#10 in a nutshell》--- 读书随记(13)
Chapter 22. Parallel Programming
内容来自书籍《C# 10 in a Nutshell》
Author:Joseph Albahari
需要该电子书的小伙伴,可以留下邮箱,有空看到就会发送的
在本章中,我们将介绍旨在利用多核处理器的多线程 API 和结构
- Parallel LINQ, or PLINQ
- Parallel class
- task parallelism constructs
- concurrent collections
这些构建体统称为 Parallel Framework PFX。并行类和任务并行结构一起被称为 Task Parallel Library TPL。
.NET 提供了许多额外的专用 API 来帮助并行和异步编程
- System.Threading.Channels.Channel 是 .NET Core3中引入的一个高性能异步生产者/消费者队列
- Microsoft Dataflow 是一个复杂的 API,用于创建由缓冲区块组成的网络,这些缓冲区块并行执行操作或数据转换,类似于角色/代理编程。
- 反应扩展实现了 LINQ 可观察(IAsyncEnumable 的一种替代抽象) ,并且擅长组合异步流(System.Reactive NuGet package)
Why PFX?
在过去的15年里,CPU 制造商已经从单核处理器转向了多核处理器。这对我们程序员来说是个问题,因为单线程代码不会因为这些额外的内核而自动运行得更快
对于大多数服务器应用程序来说,利用多个核心很容易,因为每个线程可以独立处理一个单独的客户端请求,但是在桌面应用上就比较困难了,因为它通常要求你使用计算密集型代码并执行以下操作:
- 把它分成小块
- 通过多线程并行执行这些块
- 在结果可用时以线程安全和高性能的方式对其进行整理
尽管您可以使用经典的多线程结构来完成所有这些工作,但是这很笨拙,特别是分区和排序的步骤。另一个问题是,当许多线程同时处理相同的数据时,通常的线程安全锁策略会引起大量的争用
PFX 库的设计就是为了在这些场景中提供帮助。
暂时跳过
Chapter 23. Span< T > and Memory< T >
暂时跳过
Chapter 24. Native and COM Interoperability
暂时跳过

浙公网安备 33010602011771号