在C#中,Guava Striped-Class是否有类似的东西?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (43)

有些情况下我真的很喜欢用Guava's Striped class。

在C#中有类似的吗?

提问于
用户回答回答于

我认为你可以做的最好的是实现你自己的,因为所有的dotnet框架类型只为整个列表提供一个。 要做到这一点,你可以使用GetHashCode()函数,modulus(%)它与你想要的stripse量。并将其用作Tuple<TLock, List<T>>[]的index。TLock可以是System.Threading名称空间中定义的任何类型的锁的索引,T是想要存储/访问的类型。

用户回答回答于

它看起来并不完全相等,但是有一些无锁的线程安全的收集选项(我不确定你想要实现什么,所以我不能说它们是否适合你的情形) 。看看System.Collections.Concurrent命名空间。

特别是ConcurrentBag,ConcurrentQueue,ConcurrentStack和ConcurrentDictionary都有不同的锁定/无锁线程安全策略。有些在此博文中有解释。

可能能够通过分区程序类获得想要的内容,但我不确定能实现。

扫码关注云+社区