作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在编写一个程序,其中一个线程需要将项目插入队列,一个或多个线程从队列中弹出项目并处理它们。为避免内存不足,我希望生产者线程在队列已满时休眠。有些项目的优先级高于其他项目,因此我希望先处理这些项目。如果这些项目具有相同的优先级,我希望首先处理最先添加的项目。
我想在 WPF DataGrid 中显示前 100 个左右的项目,因此它也需要由 UI 线程访问。如果它可以通知 UI 线程也有更新,即实现 IObservable,那就太好了。
是否有一个容器类可以完成这一切?
对于奖励积分,我很确定在入队和出队时不需要锁定整个队列。
.NET 4 实现很好。
最佳答案
您在寻找容器时运气不佳 - 您必须自己实现一个。小心优先级 - 排序很快就会变慢。我所做的是我自己实现了一个队列类,它在内部使用多个数组(每个优先级一个——编码为低、中、高)。这样我从不排序。尽可能避免使用锁(假定为多核)并使用自旋锁 (.NET 4.0),它们在队列场景中速度更快/开销更少。
关于c# - 线程安全的缓冲可观察优先级队列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3792536/
我是一名优秀的程序员,十分优秀!