gpt4 book ai didi

c# - BlockingCollection 最大大小

转载 作者:行者123 更新时间:2023-11-30 15:34:39 24 4
gpt4 key购买 nike

我知道使用 ConcurrentQueue 的 BlockingCollection 的 boundedcapacity 为 100。

但是我不确定那是什么意思。

我正在尝试实现一个并发缓存,如果队列大小太大,它可以出列,可以在一个操作中出列/入列(即缓存溢出时松散消息)。有没有办法为此使用 boundedcapacity,还是手动执行此操作或创建新集合更好。

基本上我有一个阅读线程和几个写作线程。如果队列中的数据是所有写入器中“最新鲜”的,我会喜欢它。

最佳答案

N 的有界容量意味着如果队列已经包含 N 个项目,任何试图添加另一个项目的线程都将阻塞,直到另一个线程删除一个项目。

您似乎想要的是一个不同的概念 - 您希望最近添加的项目是第一个被消费线程出列的项目。

您可以使用 ConcurrentStack 来实现这一点而不是底层存储的 ConcurrentQueue。

您将使用 this constructor并传入一个 ConcurrentStack

例如:

var blockingCollection = new BlockingCollection<int>(new ConcurrentStack<int>());

通过使用 ConcurrentStack,您可以确保消费线程出队的每个项目都是当时队列中最新鲜的项目。

另请注意,如果您为阻塞集合指定上限,则可以使用 BlockingCollection.TryAdd()如果在您调用它时集合已满,它将返回 false

关于c# - BlockingCollection 最大大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15928642/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com