使用 ConcurrentDictionary 更新字典代码
本文关键字:代码 字典 更新 ConcurrentDictionary 使用 | 更新日期: 2023-09-27 18:35:17
如何更新以下代码以使用ConcurrentDictionary?
private Dictionary (string, SymbolOrderBook) books = new Dictionary(string, SymbolOrderBook)();
SymbolOrderBook book;
lock (books)
{
if (!books.TryGetValue(symbol, out book))
{
book = new SymbolOrderBook(symbol);
books.Add(symbol, book);
}
}
你可以像这样使用 GetOrAdd
方法:
首先,你像这样定义字典:
private ConcurrentDictionary<string, SymbolOrderBook> books =
new ConcurrentDictionary<string, SymbolOrderBook>();
然后你得到或添加一个这样的条目:
SymbolOrderBook book = books.GetOrAdd(symbol, s => new SymbolOrderBook(s));
这样做的作用是,如果指定符号存在现有书籍,则返回该书籍,否则,它会创建一个新书籍,将其添加到字典中,然后返回它。所有这些都发生在原子操作中。
using System.Collections.Concurrent;
ConcurrentDictionary<string, SymbolOrderBook> books = new ConcurrentDictionary<string, SymbolOrderBook>();
SymbolOrderBook book = new SymbolOrderBook(symbol);
books.GetOrAdd(symbol, book);