.net - 需要非常快速的线程安全收集或内存数据库

标签 .net multithreading collections thread-safety in-memory-database

我从外部应用程序获取数据:

class DataItem
{
   public string key;
   public int Attribute1;
   public string Attribute2;
}

一个线程将其存储在集合中。 其他线程(3-10)按键(90%)和属性(10%)查询集合。

如果我的收藏中有 10、100、1000 多个项目,实现这个的最佳方法是什么?

最佳答案

如果你真的想要一个内存数据库那么Sqlite使用 managed data provider将是你最好的选择。但是,我怀疑在这种情况下你会接受 ConcurrenctDictionary .这个集合可以轻松处理 1000 多个项目和并行访问它的多个线程。使用此集合的注意事项是您只能为集合中的每个条目指定一个键。您可能需要为要查找的每个属性使用单独的集合。话又说回来,如果按属性查找的频率不够高,那么您可以选择枚举整个集合来查找匹配的属性,而无需单独的集合。

关于.net - 需要非常快速的线程安全收集或内存数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6075901/

相关文章:

java - Tcp 服务器 WritePendingException 尽管线程锁

java - 如何(全局)替换Java并行流的公共(public)线程池后端?

java - 识别客户列表中重复的客户 ID

collections - 正确使用 meteor 包中的集合?

java - 修改列表映射并获取 ConcurrentModificationException

c# - 使用表达式树设置字段值

c# - 使用任务处理异常

c# - 如何拖放到 Windows Media Control

c# - 如何检查字符串是否包含单词的所有字符

java - 从多个文件读取数据并应用业务逻辑