问题标签 [concurrent-collections]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1267 浏览

java - ConcurrentSkipListSet 并替换 remove(key)

我正在使用 ConcurrentSkipListSet,我用 20 个键填充。

我想不断地更换这些钥匙。但是,ConcurrentSkipListSet 似乎没有原子替换功能。

这就是我现在使用的:

整个操作的目标是保持列表尽可能长,并且仅通过替换进行更新。updateSet 每毫秒调用大约 100 次。

现在,我的问题是:如果元素本身在之前(而不是之后)存在,remove 是否返回 true,或者当调用实际上负责删除时该方法才返回 true?即:如果多个线程同时在同一个键上调用remove,它们/all/会返回true,还是只有一个返回true?

0 投票
3 回答
6869 浏览

c# - 并发集合在没有 Thread.Sleep 的情况下消耗过多的 cpu

两者的正确用法是什么,BlockingCollection或者ConcurrentQueue您可以自由地使项目出队而不会使用线程烧毁一半或更多的 CPU?

我正在使用 2 个线程运行一些测试,除非我的 Thread.Sleep 至少为 50~100 毫秒,否则它总是会占用至少 50% 的 CPU。

这是一个虚构的例子:

在上面的例子中,我必须设置一个 thread.sleep,这样 CPU 就不会爆炸。

注意:我也尝试过没有 while 进行 IsEmpty 检查,结果是一样的。

0 投票
2 回答
13591 浏览

c# - ConcurrentDictionary 线程安全到我可以将它用于静态缓存的程度吗?

基本上,如果我想做以下事情:

这是否让我避免lock在所有地方使用 s ?

0 投票
2 回答
1130 浏览

c# - AutoResetEvent 过程?

我是否必须将事件设置为 false 一旦我拥有它 Dequeue 或事件在它回击时自行返回 false_queueNotifier.WaitOne()或它是如何工作的?

我应该像下面的示例那样使用内部 while 还是两种方式都很好/相等?

0 投票
4 回答
13471 浏览

c# - 如何在 .NET 4.0 中对并发集合进行排序

如何在 .NET 4.0 中对并发集合进行排序 例如,我构建了我的 ConcurrentBag 集合。如何对其中的元素进行排序?

0 投票
4 回答
101523 浏览

c# - 在 ConcurrentDictionary AddOrUpdate 中为更新部分添加什么

我正在尝试使用 Dictionary 重写一些代码以使用 ConcurrentDictionary。我已经查看了一些示例,但我仍然无法实现 AddOrUpdate 函数。这是原始代码:

我不知道要为更新部分添加什么:

任何指针将不胜感激。

0 投票
1 回答
3269 浏览

c# - 在 Linq 语句中使用 ConcurrentQueue

如果我有一个 ConcurrentQueue,是否有一种首选的方式来使用 Linq 语句来使用它?它没有将所有项目作为序列出列的方法,并且它的枚举器不会删除项目。

我正在做批量消费,这意味着我想定期处理队列并将其清空,而不是处理它直到它为空并阻塞直到更多项目入队。BlockingCollection 似乎不会起作用,因为它会在到达最后一项时阻塞,我希望该线程执行其他操作,例如清除其他队列。

现在,我制作了一个辅助方法

有没有更好的方法,还是我做对了?

0 投票
3 回答
9942 浏览

.net - 为什么没有 ConcurrentList

新的命名空间 System.Collections.Concurrent 包含字典、队列和堆栈以及其他类的并发集合。有人知道为什么没有 ConcurrentList 吗?

更新

我发布了一个新问题,解释了我当前的情况。我更喜欢改变原始问题的整体意义。这是新问题的链接。

0 投票
2 回答
1257 浏览

java - ConcurrentNavigableMap,弱一致迭代器的解释

ConcurrentNavigableMap 的 JavaDoc 中,我对以下内容有些困惑:

视图的迭代器是一个“弱一致”的迭代器,它永远不会抛出 ConcurrentModificationException,并保证在构造迭代器时遍历元素,并且可以(但不保证)反映构造后的任何修改。

在 ConcurrentSkipListMap 等接口的实现中,措辞似乎相同。

这是什么意思,这似乎是一个矛盾 - 要么它可以保证遍历元素,因为它们存在于构造中,或者它可能反映构造后的修改?

更新:我基本上想知道是否在 ConcurrentNavigableMaps 上创建迭代器,如 ConcurrentSkipListMap,创建地图的“快照”视图。

0 投票
4 回答
9528 浏览

java - 如何在 ConcurrentHashMap 线程中更新 BigDecimal 是安全的

我正在制作一个应用程序,它需要一堆日记帐分录并计算总和。

当有多个线程调用该addToSum()方法时,以下方法是线程/并发安全的。我想确保每次通话都能正确更新总数。

如果不安全,请解释我必须做什么来确保线程安全。

我需要synchronize获取/放置还是有更好的方法?

非常感谢!

更新:

谢谢大家的回答,我已经知道上面的代码不是线程安全的

感谢 Vint 建议AtomicReferencesynchronize. 我以前AtomicInteger用来保存整数和,我想知道 BigDecimal 是否有类似的东西。

关于两者的利弊,是否有明确的结论?