问题标签 [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.
java - ConcurrentSkipListSet 并替换 remove(key)
我正在使用 ConcurrentSkipListSet,我用 20 个键填充。
我想不断地更换这些钥匙。但是,ConcurrentSkipListSet 似乎没有原子替换功能。
这就是我现在使用的:
整个操作的目标是保持列表尽可能长,并且仅通过替换进行更新。updateSet 每毫秒调用大约 100 次。
现在,我的问题是:如果元素本身在之前(而不是之后)存在,remove 是否返回 true,或者仅当调用实际上负责删除时该方法才返回 true?即:如果多个线程同时在同一个键上调用remove,它们/all/会返回true,还是只有一个返回true?
c# - 并发集合在没有 Thread.Sleep 的情况下消耗过多的 cpu
两者的正确用法是什么,BlockingCollection
或者ConcurrentQueue
您可以自由地使项目出队而不会使用线程烧毁一半或更多的 CPU?
我正在使用 2 个线程运行一些测试,除非我的 Thread.Sleep 至少为 50~100 毫秒,否则它总是会占用至少 50% 的 CPU。
这是一个虚构的例子:
在上面的例子中,我必须设置一个 thread.sleep,这样 CPU 就不会爆炸。
注意:我也尝试过没有 while 进行 IsEmpty 检查,结果是一样的。
c# - ConcurrentDictionary 线程安全到我可以将它用于静态缓存的程度吗?
基本上,如果我想做以下事情:
这是否让我避免lock
在所有地方使用 s ?
c# - AutoResetEvent 过程?
我是否必须将事件设置为 false 一旦我拥有它 Dequeue 或事件在它回击时自行返回 false_queueNotifier.WaitOne()
或它是如何工作的?
我应该像下面的示例那样使用内部 while 还是两种方式都很好/相等?
c# - 如何在 .NET 4.0 中对并发集合进行排序
如何在 .NET 4.0 中对并发集合进行排序 例如,我构建了我的 ConcurrentBag 集合。如何对其中的元素进行排序?
c# - 在 ConcurrentDictionary AddOrUpdate 中为更新部分添加什么
我正在尝试使用 Dictionary 重写一些代码以使用 ConcurrentDictionary。我已经查看了一些示例,但我仍然无法实现 AddOrUpdate 函数。这是原始代码:
我不知道要为更新部分添加什么:
任何指针将不胜感激。
c# - 在 Linq 语句中使用 ConcurrentQueue
如果我有一个 ConcurrentQueue,是否有一种首选的方式来使用 Linq 语句来使用它?它没有将所有项目作为序列出列的方法,并且它的枚举器不会删除项目。
我正在做批量消费,这意味着我想定期处理队列并将其清空,而不是处理它直到它为空并阻塞直到更多项目入队。BlockingCollection 似乎不会起作用,因为它会在到达最后一项时阻塞,我希望该线程执行其他操作,例如清除其他队列。
现在,我制作了一个辅助方法
有没有更好的方法,还是我做对了?
.net - 为什么没有 ConcurrentList
新的命名空间 System.Collections.Concurrent 包含字典、队列和堆栈以及其他类的并发集合。有人知道为什么没有 ConcurrentList 吗?
更新
我发布了一个新问题,解释了我当前的情况。我更喜欢改变原始问题的整体意义。这是新问题的链接。
java - ConcurrentNavigableMap,弱一致迭代器的解释
在ConcurrentNavigableMap 的 JavaDoc 中,我对以下内容有些困惑:
视图的迭代器是一个“弱一致”的迭代器,它永远不会抛出 ConcurrentModificationException,并保证在构造迭代器时遍历元素,并且可以(但不保证)反映构造后的任何修改。
在 ConcurrentSkipListMap 等接口的实现中,措辞似乎相同。
这是什么意思,这似乎是一个矛盾 - 要么它可以保证遍历元素,因为它们存在于构造中,或者它可能反映构造后的修改?
更新:我基本上想知道是否在 ConcurrentNavigableMaps 上创建迭代器,如 ConcurrentSkipListMap,创建地图的“快照”视图。
java - 如何在 ConcurrentHashMap 线程中更新 BigDecimal 是安全的
我正在制作一个应用程序,它需要一堆日记帐分录并计算总和。
当有多个线程调用该addToSum()
方法时,以下方法是线程/并发安全的。我想确保每次通话都能正确更新总数。
如果不安全,请解释我必须做什么来确保线程安全。
我需要synchronize
获取/放置还是有更好的方法?
非常感谢!
更新:
谢谢大家的回答,我已经知道上面的代码不是线程安全的。
感谢 Vint 建议AtomicReference
将synchronize
. 我以前AtomicInteger
用来保存整数和,我想知道 BigDecimal 是否有类似的东西。
关于两者的利弊,是否有明确的结论?