gpt4 book ai didi

C# 不可变哈希集锁定

转载 作者:行者123 更新时间:2023-11-30 13:53:51 25 4
gpt4 key购买 nike

假设服务器存储连接数据的 ImmutableHashSet

ImmutableHashSet<ConnectionData> connections = new ...

然后我有各种调用从这里添加/删除/读取,即:

OnConnected(connectionData) => connections = connections.Add(connectionData);
OnDisconnected(connectionData) => connections = connections.Remove(connectionData);

我的问题是,在上述仅对 HashSet 执行单个操作(添加/删除)的调用中,我应该锁定连接吗?还是 ImmutableHashSet 操作线程安全?

最佳答案

您将值直接分配回集合的模式不是线程安全的。但是,在使用不可变集合时,您通常不希望锁定。这些集合的主要特征之一是无锁操作,这通常具有更高的性能。相反,使用 ImmutableInterlocked 类:

ImmutableHashSet<ConnectionData> connections;

ImmutableInterlocked.Update(ref connections,
(collection, item) => collection.Add(item),
connectionData);

ImmutableInterlocked.Update(ref connections,
(collection, item) => collection.Remove(item),
connectionData);

关于C# 不可变哈希集锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51434624/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com