gpt4 book ai didi

c# - 线程安全的缓冲可观察优先级队列?

转载 作者:太空狗 更新时间:2023-10-29 23:03:51 28 4
gpt4 key购买 nike

我正在编写一个程序,其中一个线程需要将项目插入队列,一个或多个线程从队列中弹出项目并处理它们。为避免内存不足,我希望生产者线程在队列已满时休眠。有些项目的优先级高于其他项目,因此我希望先处理这些项目。如果这些项目具有相同的优先级,我希望首先处理最先添加的项目。

我想在 WPF DataGrid 中显示前 100 个左右的项目,因此它也需要由 UI 线程访问。如果它可以通知 UI 线程也有更新,即实现 IObservable,那就太好了。

是否有一个容器类可以完成这一切?

对于奖励积分,我很确定在入队和出队时不需要锁定整个队列。

.NET 4 实现很好。

最佳答案

您在寻找容器时运气不佳 - 您必须自己实现一个。小心优先级 - 排序很快就会变慢。我所做的是我自己实现了一个队列类,它在内部使用多个数组(每个优先级一个——编码为低、中、高)。这样我从不排序。尽可能避免使用锁(假定为多核)并使用自旋锁 (.NET 4.0),它们在队列场景中速度更快/开销更少。

关于c# - 线程安全的缓冲可观察优先级队列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3792536/

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