【问题标题】:What thread-safe collection classes are available in Silverlight 4?Silverlight 4 中提供了哪些线程安全集合类?
【发布时间】:2011-05-02 15:18:27
【问题描述】:

我正在开发一个应用程序框架,客户端的 Silverlight 和服务器端的 .NET 4 将使用该框架。在内部,框架具有字典和队列数据结构,其中多个线程将同时访问集合。

在服务器端,我想利用System.Collections.Concurrent 命名空间中的ConcurrentDictionaryConcurrentQueue 类。然而,这些类并未在 Silverlight 4 中实现。

我正在考虑的两种方法是:

  1. 反编译并发字典 和 ConcurrentQueue 类和 在 Silverlight 中实现它们 类库。这些将使用 System.Collections.Concurrent 命名空间来限定范围。
  2. 实现自定义线程安全 我在共享中需要的集合类 图书馆(或找一个可靠的 Silverlight 线程安全集合 实现),可用于服务器端和客户端。

第一种方法允许我只实现我需要的 Silverlight 数据结构,但我担心会在我的 Silverlight 实现和 .NET 4 中实现的并发集合类之间引入差异。

第二种方法将在客户端和服务器端提供一致的并发收集实现,但感觉就像我在重新发明轮子。

在 Silverlight 中实现 ConcurrentDictionaryConcurrentQueue 类似乎并不困难,但是否已经有一个被广泛采用的 Silverlight 线程安全集合类库?

【问题讨论】:

  • 编辑标签,因为这仍然适用于 SL5。

标签: silverlight thread-safety concurrent-collections


【解决方案1】:

试试这个:http://ch.codeplex.com/

【讨论】:

  • 该项目看起来不错,但似乎没有 ConcurrentQueue 实现。不过看起来像是一些不错的代码——我肯定会阅读源代码。
  • 这是一个非常过时的项目,不包括 ConcurrentQueue。自从 MS 发布 System.Collections.Concurrent for .net4 以来,它似乎已被放弃,所以问题仍然存在。 SL5 的 ConcurrentQueue 有什么好的实现吗?反对的,你去编译成功了吗?
  • 在理论上可能的情况下进行反编译比我最初想象的要困难得多(使用的 BCL 类在 Silverlight 中不可用)。从头开始编写集合类可能更容易,但我没有时间尝试。
  • 这有 ConcurrentQueue robertmclaws.com/nuget-packages/…
  • @Cœur 似乎对我有用。这里也是一个谷歌缓存webcache.googleusercontent.com/…
【解决方案2】:

Mono 的类库包括各种并发集合的实现,并在非常宽松的 MIT 许可下获得许可。

【讨论】:

    猜你喜欢
    • 2014-04-22
    • 2011-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-06
    • 1970-01-01
    • 2011-05-30
    • 1970-01-01
    相关资源
    最近更新 更多