【问题标题】:ConcurrentStack - Removing From Bottom Or Equivalent FunctionalityConcurrentStack - 从底部或等效功能中删除
【发布时间】:2012-11-30 15:46:12
【问题描述】:

我一直在寻找问题的答案,但我没有找到解决问题的好方法。 我想要做的基本上是有一个并发集合,有点像 ConcurrentStack 但我需要能够从堆栈底部删除项目。这是因为我希望堆栈只有一定长度,因此当集合变得太大时,任何旧项目都会从底部移除。

并发堆栈在添加对象时效果很好,但是从底部删除它们是我无法弄清楚的。

我还想有一个 ConcurrentDictionary 来跟踪添加的日期和存储的对象,然后根据最后一个日期删除项目?

任何帮助/想法将不胜感激。

【问题讨论】:

    标签: c# .net multithreading concurrency


    【解决方案1】:

    我觉得你需要ConcurrentQueue Class

    【讨论】:

    • 不清楚他是否想从“底部”中删除,在这种情况下这正是他应该做的,或者他是否真的需要从两者中删除结束,在这种情况下,他真正需要的是ConcurrentDeque(不存在)。
    • 已经看过了。不是我想要的功能,因为我希望我添加的最新项目像堆栈一样位于顶部,然后被新添加的项目向下推,直到最后,当它前面有 X 个项目时被删除。想一想我想要随时访问头部和尾部的链表。不要关心中间的内容,只要按照它们添加的顺序即可。
    • @Michaela 如果您总是删除“最旧”的项目,那么您确实需要ConcurrentQueue
    • 是的,但我再次无法访问该集合的另一端。如果我将一个项目添加到队列中,我希望能够访问该项目以及能够在另一侧删除该项目。
    • 又看了一遍ConcurrentQueue,终于用上了。为了获取最近添加的项目(在队列的末尾),我将队列复制到一个列表中(从而拍摄了当前在其中的内容的快照)并拍摄了最后一个。
    猜你喜欢
    • 1970-01-01
    • 2022-09-23
    • 2020-11-16
    • 1970-01-01
    • 2018-03-31
    • 2018-07-04
    • 2020-06-12
    • 2014-04-08
    • 1970-01-01
    相关资源
    最近更新 更多