【问题标题】:Simple asynchronous Queue datastructure in C#/monoC#/mono 中的简单异步队列数据结构
【发布时间】:2010-04-07 11:35:51
【问题描述】:

我想编写一个需要任务队列的应用程序。我应该能够将任务添加到这个队列中,并且这些任务可以异步完成(并且应该可以从这个队列中移除,一旦它们完成)

如果提供唯一的队列位置标识符,数据结构还应该能够获取队列中任何任务的信息。

数据结构还应随时提供队列中的项目列表。

管理此队列的 LINQ 接口也是可取的。

由于这是许多应用程序的一个非常常见的要求(至少在我个人的观察中),我想知道是否有任何标准数据结构可作为 c# 库的一部分,而不是我从头开始编写一些东西。

任何指针?

【问题讨论】:

  • 为什么不在完成后将完整的项目移动到 second 存储桶(可能只是一个同步列表)?这将使待处理的存储桶保持良好和小巧。再说了,你说的严格来说也不是队列……
  • 是的。它不是队列。但我不知道如何称呼这个数据结构。我想要一个 TaskManager 数据结构。是否有任何内置的 C# 库可以帮助实现这一目标?

标签: c# mono queue data-structures


【解决方案1】:

在我看来,您将数据结构和它旨在跟踪的异步任务混为一谈。你确定他们需要是同一个东西吗?

ThreadPool.QueueUserWorkItem 不满足运行异步任务吗?您可以维护自己的从List<TaskStatus>HashSet<TaskStatus> 派生的结构来跟踪结果,并且可以提供方便的方法来清除已完成的项目、检索待处理的项目等。

【讨论】:

  • ThreadPool 足以让我对项目进行排队。正如您在评论的第二个艺术中正确提到的那样,我可以使用这些便捷方法编写自己的类。但想知道 c# 库是否已经有一些提供此功能的类..
猜你喜欢
  • 1970-01-01
  • 2012-11-01
  • 2021-01-15
  • 1970-01-01
  • 2013-03-13
  • 1970-01-01
  • 1970-01-01
  • 2017-06-08
  • 1970-01-01
相关资源
最近更新 更多