《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

暂时跳过

posted @ 2022-07-02 22:07  huang1993  阅读(83)  评论(0)    收藏  举报