- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在考虑使用 ConcurrentBag在我正在编写的程序中,但是我似乎找不到关于 TryTake 的足够文档.
我知道该方法可能会失败,但我找不到关于可能发生这种失败的情况的解释,以及失败后集合将处于什么状态。
如果只是在另一个线程已经删除该项目的情况下,那么我不在乎,但我真的无法承受的是我想要删除的项目在调用后仍然在集合中。
这有可能吗?
最佳答案
根据文档,如果没有可拿的元素,即包是空的,它会返回 false。因为它是一个线程安全的集合,所以应该没有关于“空”和多线程的问题。
您必须考虑结果 T
的文档以及返回值
:
result T: When this method returns, result contains the object removed from the ConcurrentBag or the default value of T if the bag is empty.
Return: true if an object was removed successfully; otherwise, false.
关于c# - 什么情况下 ConcurrentBag.TryTake() 会失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4614126/
我一直在阅读新的并发集合,特别是 ConcurrentBag 引起了我的注意。由于 ConcurrentBag 内部在每个单独的线程上持有一个本地集,使用它来跟踪项目,这意味着当线程本身超出范围时,它
"ConcurrentBag(T) is a thread-safe bag implementation, optimized for scenarios where the same thread
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: Possible memoryleak in ConcurrentBag? 我的应用中出现严重内存泄漏。我使
我正在运行一些使用 ConcurrentBags 的代码。我正在探索 IEnumerable 功能。我运行的代码是 ConcurrentBag bag = new ConcurrentBag(); T
.NET 4.5.1 我有一个包含 200,000 个对象的 ConcurrentBag。一个对象被两个 long 类型的属性认为是“唯一的”。 我需要检查包中是否存在以前存在的唯一对象,如果不存在,
我有一个 .NET 4.5 单实例 WCF 服务,它维护列表中的项目集合,该列表将同时具有并发的读者和作者,但读者比作者多得多。 我目前正在决定是否使用 BCL ConcurrentBag或使用我自己
有没有办法一次将多个项目添加到 ConcurrentBag,而不是一次添加一个?我没有在 ConcurrentBag 上看到 AddRange() 方法,但是有一个 Concat()。但是,这对我不起
我已经在这里阅读了之前关于 ConcurrentBag 的问题但没有找到在多线程中的实际实现示例。 ConcurrentBag is a thread-safe bag implementation,
分析后,我发现我的应用程序中的特定对象将通过使用对象池而不是构造对象池而受益匪浅。此应用程序基于具有多个线程的生产者/消费者队列。 ConcurrentBag 集合基本上是一个对象池,作为应用程序对象
我在使用包含非托管对象的 ConcurrentBag 正确处理 Dispose/Finalization 时遇到问题。运行下面的代码(通常)会在对 TryTake(). 大概在这种情况下,垃圾收集器在
我需要将 ConcurrentBag 设置为可通知的。我需要知道它安全吗?该类的代码是 public class NotifiableConcurrentBag : ConcurrentBag, IN
我有一个静态集合,比如调用远程 rest api 的任务: static ConcurrentBag> _collection = new ConcurrentBag>(); static void
我读到要修改或改变并发包中的对象,我必须将其取出、修改,然后再放回去。 但是,我看到了执行以下操作的代码: var obj = bag.FirstOrDefault(report => report.
当线程添加或删除 ConcurrentBag 的元素时会发生什么而另一个线程正在枚举这个包?新元素是否也会出现在枚举中,删除的元素是否不会出现? 最佳答案 一 jar read the fine ma
我编写了一个程序,其中列表构建器方法返回 IEnumerable of string,其中包括大量字符串(100 万个项目),我将其存储在 List of string 中,然后它将所有项目附加到 中
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Possible memoryleak in ConcurrentBag? 编辑1: 真正的问题是。你能证实
我已经构建了这段代码来并行处理大量字符串之间的字符串比较,以加快速度。 我使用了 ConcurrentBag,因此所有线程(任务)都可以写入线程安全集合。然后我将这个集合转储到一个文件中。 我遇到的问
我有一个应用程序,它有一个存储在 static ConcurrentBag 中的对象列表。 UI 有一个计时器,它运行的方法可以更新 ConcurrentBag 中的对象。 只有一个线程(由计时器启动
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T
如何清除ConcurrentBag?它没有任何方法,如 Clear 或 RemoveAll... 最佳答案 2017 年 10 月 3 日更新:正如@Lou 正确指出的那样,赋值是原子的。在这种情况下
我是一名优秀的程序员,十分优秀!