优先级队列-C#嵌套的私有类

本文关键字:嵌套 队列 -C# 优先级 | 更新日期: 2023-09-27 18:00:34

我正在创建自己的优先级队列。这不是一个典型的优先级队列,因为项目是以给定的优先级插入的。相反,项目可以添加到队列中,并且它们以最高优先级开始(假设我们有5个队列,队列1=最高优先级,队列5=最低优先级),因此项目最初被添加到队列1中。

这个数据结构的用户可以获得next()元素,它根据我感兴趣的一些因素返回一个元素,即优先级,但它不会从整个数据结构中退出。用户对上一次调用next()返回的项的有效性提供一些反馈(例如,通过/失败结果),并在此基础上,按优先级向上或向下移动该项。基本上,失败的元素使用频率较低,我有机制最终删除失败频率过高的元素。

1) 有什么改进界面的建议吗?我不喜欢从next()调用中检索元素,然后用另一个函数调用提供反馈。在国家陷入混乱的地方,错误的空间太大了。(即用户在获得下一个元素之前不会报告结果。等等。)此外,希望允许这是线程安全的。

2) 我正在使用一个私有嵌套类,它将我感兴趣的元素以及与每个元素相关的一些属性封装起来,以跟踪元素的统计信息(例如通过/失败计数等),我想知道是否有办法从内部类访问外部类成员?

优先级队列-C#嵌套的私有类

不确定我是否完全理解这个问题,但next()没有等待返回的反馈有什么问题?该结构的用户将next()元素从队列中拉出,然后在准备好后在该元素上submitFeedback()。同时,其他用户也可以异步地提取next()元素。队列在调用进入时处理调用。如果这没有帮助,你能更详细地解释处理状态的问题吗?