[英]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.