繁体   English   中英

我怎样才能制作一个线程安全的字典

[英]How can I make a thread safe dictionary

我有一本字典,我想把它写成 static。假设我有一本包含一些数据的字典。如果我同时通过两个进程访问这本字典,那么我的数据就会不匹配。 我怎么解决这个问题。

例如在字典中我有键 A- 值 1 2 3 4 5 键 B- 值 6 7 8 9 10

当我通过两个进程访问该字典时,一个读取 A 的数据,另一个读取 B 的数据。然后我得到结果集,其中 B 包含 A 值。

您只需要在 System.Collections.Concurrent 中使用 ConcurrentDictionary

private static readonly ConcurrentDictionary<TKey, TValue> dictionary = 
    new ConcurrentDictionary<TKey, TValue>();

如果您的程序是用Java编写的,则需要同步检索和设置值的所有方法。

例如:

public synchronized int getValue() {
    return value;
}

'synchronized'关键字可确保两个进程不会同时读取或设置数据。

这是通过JVM获取对象的锁来实现的,该锁仅允许一个线程一次访问它。 然后执行代码,完成后释放锁。 如果另一个线程正在等待,则该线程可以获取该对象的锁。

如果您的程序是用.NET编写的,那么您可以看看这个相关问题, 问题与实现带有链接和C#示例代码的线程安全字典的最佳方法有关……

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM