【问题标题】:C# Dictionary with Simultanous Reading/Writing functionalty具有同时读/写功能的 C# 字典
【发布时间】:2018-09-11 12:58:50
【问题描述】:

是否有实现以下功能的数据结构或算法?

数据被连续接收到多个应用程序中 线程并被写入字典类型结构。 如果有人想在写入字典时阅读字典,而不是 使用锁定,在值更新之前可用的值 将提供started。

【问题讨论】:

  • “被写入字典类型结构使用锁” - 我会提倡从要求中删除它。这是一个实现细节,只会使您的解决方案集更小。他们的意思可能是它应该是线程安全的。但是在无锁数据结构上强制锁定有点适得其反。
  • 这些要求看起来更像是大学作业
  • @ColinM 我以这种方式提出了这个问题,以便在不打扰任何人的情况下询问具体点我的代码细节。我向你保证,我不是大学生。
  • 无论是大学作业还是工作作业,从规范开始都是合理的。这个问题的问题在于,它显示了他们自己研究问题的零努力。

标签: c# multithreading dictionary synchronization locking


【解决方案1】:

【讨论】:

  • ConcurrentDictionary 同时提供了多次读取的功能,但我希望能够在线程写入字典时读取最后一个可用值。我认为 ConcurrentDictionary 不可能。
  • @RameshVerma " 我认为 ConcurrentDictionary 不可能做到这一点" 是什么让你这么认为?
  • @RameshVerma:“ConcurrentDictionary 提供同时读取多个功能”。实际上,即使是普通的 Dictionary 也提供相同的功能:“只要不修改集合,一个 Dictionary 可以同时支持多个读取器。” (docs.microsoft.com/en-us/dotnet/api/…)
  • @LucaCremonesi 正如我在上面的评论中提到的,我想同时读写,因此“只要不修改集合”部分不适用于我的情况。
  • @RameshVerma:我知道你想同时读写字典。这就是为什么 James 建议的 ConcurrentDictionary 类很可能是您需要的。我只是指出 ConcurrentDictionary 类不仅仅提供“同时读取多个功能”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-20
  • 1970-01-01
  • 1970-01-01
  • 2011-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多