问题标签 [concurrent-queue]

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 投票
2 回答
6518 浏览

linq - C# 如何使 ConcurrentQueue 被条件清除

如何使 ConcurrentQueue 被第一个元素的条件清除。例如清除较旧的博客文章。我想出了一个 ConditionConcurrentQueue 的想法:

使用这个 ConditionConcurrentQueue 可能是这样的:

也许这是太原始的解决方案。我将不胜感激任何改进。谢谢。

0 投票
1 回答
2745 浏览

c# - 如何使用:System.Collections.Concurrent

我正在尝试添加using System.Collections.Concurrent,但它不起作用。

命名空间“System.Collections”中不存在类型或命名空间名称“Concurrent”(您是否缺少程序集引用?)

0 投票
1 回答
1471 浏览

c# - ConcurrentQueue .Net:多线程消费者

我有一个非常基本的问题,更多的是关于ConcurrentQueue. 队列是先进先出的。当多个线程开始访问它时,我们如何保证 FIFO?假设,我按顺序添加了AppleOrangesLemonPeach- Apricot。第一个TryTake应该返回Apple。但是当多个线程开始发出自己的TryTake请求时会发生什么?当一个线程Lemon甚至在另一个线程可以返回之前返回时,是否有可能Apple?我假设其他项目也将被退回,直到队列为空。但是这些回报会围绕先进先出的基本原则进行吗?

0 投票
2 回答
1442 浏览

ios - 用于在 iOS 中执行大量服务器请求的并发与串行队列

如果 iOS 应用程序必须在后台发出数百个服务器请求并将结果保存在本地移动数据库中,那么哪种方法在性能方面会更好(更少崩溃)?

在全局后台队列中将所有请求作为 1 个块传递

或者

创建“n”个用户串行队列并将所有 3 个 api 调用作为单独的块添加到每个串行队列中。

编辑:在每个Call Api中,我使用的是NSOperationQueue

0 投票
2 回答
7652 浏览

c# - ConcurrentQueue 和 Parallel.ForEach

我有一个 ConcurrentQueue ,其中包含我需要获取其来源的 URL 列表。当使用 Parallel.ForEach 和 ConcurrentQueue 对象作为输入参数时,Pop 方法将不起作用(应该返回一个字符串)。

我正在使用 Parallel 并将 MaxDegreeOfParallelism 设置为 4。我真的需要阻止并发线程的数量。使用具有并行性的队列是多余的吗?

提前致谢。

0 投票
5 回答
1708 浏览

c# - 为什么 ConcurrentQueue 和 ConcurrentDictionary 有“Try”方法 - TryAdd、TryDequeue - 而不是 Add 和 Dequeue?

ConcurrentQueueTryDequeue方法。

Queue有刚刚的Dequeue方法。

ConcurrentDictionary里面没有方法,但Add我们有。TryAdd

我的问题是:

这些并发收集方法之间有什么区别?为什么它们对于并发集合不同?

0 投票
1 回答
667 浏览

.net - 从队列中读取和写入

我在并发队列中保存了一组约 300 个位图。我正在为 over-tcp 视频流程序执行此操作。如果服务器变慢,我将接收到的位图保存在此队列中(缓冲)。我创建了一个单独的项目来测试它,但我遇到了一些问题。

当写入线程正在工作(写入队列)时,图片框正在显示队列中的图像,但它似乎跳过了许多图像(就像它正在读取写入线程刚刚添加到“列表”中的图片-不是 FIFO 行为)。当写入线程完成图片框时,它会阻塞,尽管我从队列中读取的循环仍在工作(当图片框阻塞时队列不为空)。

这是代码:

没有错误。我认为队列中可能有副本(因为图片框似乎冻结了)?我用整数尝试了相同的代码,它工作得很好。有什么问题?

0 投票
1 回答
331 浏览

c# - 引发相同事件的多个类实例

我无法弄清楚我的 C# 代码有什么问题。

我正在尝试学习如何在 System.Collections.Concurrent 命名空间中使用 ConcurrentQueue 类。

为了做到这一点,我在不同的线程中创建了同一类的 2 个实例,将不同的 Listbox 控件传递给构造函数。

我期望 EventGenerator 的每个类实例以随机间隔引发事件,更新使用随机生成的数字传递的列表框,并将该数字添加到也传递给构造函数的 ConcurrentQueue 中。

在我的主线程中,是由两个衍生线程将对象的 ConcurrentQueue 排入队列的方法。

但我得到的是显示相同数据的 2 个 EnQueue Listboxes 和 DeQueue Listbox 似乎报告已将它们都排入队列。

如果我的描述不够好,我深表歉意,我的代码如下,以及指向我的表单图像的链接,以防它可能更好地帮助可视化我正在尝试做的事情......

形式

传入连接事件参数

事件发生器

在此处输入图像描述

0 投票
1 回答
1542 浏览

vb.net - VB.Net:从线程上的 ConcurrentQueue 中检索项目

我有一个在一个线程上运行的类,它侦听数据并将其推送到字符串的 ConcurrentQueue 中。我正在使用 Enqueue 向其中添加数据,我可以看到队列长度正在增长,因此我知道数据正在正确排队。

然后在另一个线程上运行的另一个类应该以 FIFO 为基础取出每条数据。然而,它根本什么都不做。这是应该将数据拉出队列的循环:

除了使用 Count() 检查队列中的项目数外,我还尝试过 IsEmpty。结果一样!?

虽然似乎有很多关于在 C# 中使用 ConcurrentQueue 的文章,但我没有找到任何 VB.Net 示例,所以我有点卡住了。

帮助 !

更新:包装我的 While ... End While in a Do ... Loop 确实有效,但是当什么都没有发生时会占用线程,因此可能不建议这样做。有没有更优雅的方法来做到这一点?

0 投票
0 回答
144 浏览

c# - 排队和出列多种类型

我有一个由 COM 服务器每秒触发数千次的事件,它提供来自交易所的实时价格信息。在我的代码中,我可以访问此事件(C#):

我想尽快处理传入的数据,因为我意识到当它在交换非常繁忙时,事件的频率甚至更高,有时流似乎被卡住并且不再触发任何事件。

那么我的想法是什么?我想使用 ConcurrentQueue 对数据进行排队,并并行运行多个 Workerthreads,这些线程将项目出列以处理它们。

但是现在我不知何故被卡住了,因为我无法将数据(由最重要的值 int SymbolNr、float Price 和 DateTime Time 组成)一次排入 ConcurrentQueue 而不将它们包装到(通用)类的实例中。因为这种方法在我看来非常耗时,所以我们正在讨论每秒最多实例化 100.000 个对象。

我对吗?处理这种情况的最佳性能方法是什么?