Skip to Content
C#并发编程经典实例(第2版)
book

C#并发编程经典实例(第2版)

by Stephen Cleary
November 2020
Intermediate to advanced
226 pages
5h 34m
Chinese
Posts & Telecom Press
Content preview from C#并发编程经典实例(第2版)
37
3
异步流
异步流
asynchronous stream
)是一种异步接收多个数据项的方式,其建立在异步枚举之
上(
IAsyncEnumerable<T>
)。异步枚举是一种异步版本的枚举,也就是说,它可以依照使
用者的要求异步生成数据项。
对比异步流与其他耳熟能详的类型,并思考它们之间的区别,这样做非常有用,可以帮助
我们理解何时应当使用异步流,何时其他类型更为适用。
3.1
 异步流和
Task<T>
Task<T>
的标准异步方法只足以应对异步处理单个数据值。一旦某个
Task<T>
完成,任务就
结束了。单个
Task<T>
不能为其使用者提供多个
T
值。即使
T
是一个集合,该值也只能提
供一次。关于如何结合
Task<T>
async
,参见
1.2
节及第
2
章。
Task<T>
相比,异步流更类似于枚举。具体来说,
IAsyncEnumerator<T>
可以提供任意数量
T
值,而且一次一个。和
IEnumerator<T>
一样,
IAsyncEnumerator<T>
可以是无限长的。
3.2
 异步流和
IEnumerable<T>
顾名思义,
IAsyncEnumerable<T>
IEnumerable<T>
相似。这或许并不奇怪,它们都能让使
用者以一次一个的方式获取元素。至于二者的差别,从名字上便能洞悉:一个是异步的,
而另一个不是。
当代码遍历
IEnumerable<T>
并从枚举获取每一个元素时,它会顺带阻塞。如果
IEnumerable<T>
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

解密金融数据

解密金融数据

Justin Pauley
PHP编程:第4版

PHP编程:第4版

Kevin Tatroe, Peter MacIntyre

Publisher Resources

ISBN: 9787115550606