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版)
120
9
int
item;
try
{
item =
await
_asyncQueue.DequeueAsync();
}
catch
(InvalidOperationException)
{
break
;
}
Trace.WriteLine(item);
}
讨论
建议对异步生产者队列(或消费者队列)尽可能使用通道。除了节流,它们有多种采样选
项,并且已经高度优化。然而,如果应用程序逻辑可以通过数据流经的管道来表达,则
TPL
数据流或许更适用。最终的选项是
AsyncProducerConsumerQueue<T>
,如果应用程序已
经使用了
AsyncEx
中的其他类型,那么就可以使用这个选项。
可以从
System.Threading.Channels
NuGet
包中获取通道,从
System.Threading.
Tasks.Dataflow
NuGet
包中获取
BufferBlock<T>
类型,从
Nito.AsyncEx
NuGet
包中获取
AsyncProducerConsumerQueue<T>
类型。
参阅
9.6
节探讨带有阻塞语义而非异步语义的生产者队列(或消费者队列)。
9.7
节探讨阻塞栈和阻塞背包。
9.12
节探讨兼具阻塞语义和异步语义的生产者队列(或消费者队列)。
9.9
 节流队列
问题
假设有一个生产者队列(或消费者队列),生产者可能比消费者运行得快,这会造成不必
要的内存使用。同时,因为你希望保留所有的队列项,所以需要设法节流生产者。
解决方案
当使用生产者队列或消费者队列时,除非你能够确定消费者始终比生产者运行得快,否则 ...
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