问题标签 [producer]

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 回答
61376 浏览

concurrency - 快速和最佳的生产者/消费者队列技术 BlockingCollection 与并发队列

我在 C# 3.0 中使用 Generic.Queue 和 Monitor.Enter,wait,exit 等待在使用队列之前等待(等待元素入队)。现在我转向 C# 4。

任何人都可以建议我哪一个是快速和最好的,尤其是避免锁定..

BlockingCollection vs concurrentQueue 或其他任何东西......

笔记。我不想限制我的制作人

提前致谢..

0 投票
1 回答
78 浏览

multithreading - 跟踪不同线程上对象实例的状态?

我在空闲时间写了一个图像板刮板,主要教我线程。目前我正在使用生产者/消费者类型模式来促进这项工作。但是,我遇到了一个问题。

现在,我有“队列处理器”来观察特定类型的线程安全队列并对其采取行动。这些队列处理器每 X 秒轮询一次目标队列,如果队列中有一个项目等待处理,队列处理器会将该项目从队列中取出,使用该项目启动一个新线程,然后启动该线程。在每个线程上,都会调用长时间运行的方法(例如连接到网站并下载文件)。通过这种方式,每个项目都有自己的线程来运行。

我很难弄清楚如何在每个线程上处理每个项目时报告它的状态。

例如,假设我们有主线程 MT。MT 产生子线程 T1、T2、T3、T4 和 T5。每个线程上都有一个对应的对象,O1...O5。这些对象在其线程上被处理时可以处于三种不同的状态——S1、S2、S3。

当对象O的状态发生变化时,如何将每个对象O的状态S报告给主线程MT?

我尝试使用事件来报告状态,但我遇到了一些不稳定的结果。我用谷歌搜索了一些关于使用线程和事件的信息,但并没有走得太远。

任何帮助,将不胜感激。

谢谢你。

0 投票
3 回答
1822 浏览

.net - 多生产者多消费者无锁(甚至无等待)队列

我正在寻找有关如何将 MP/MC 队列编写为无锁甚至无等待的文档。我正在使用.Net 4.0。找了很多C++代码,但是我对内存模型不是很熟悉,所以很有可能在移植到C#的时候会引入一些bug。

0 投票
3 回答
5532 浏览

java - Java 线程生产者消费者算法无法正常工作

我正在尝试学习线程,因此我编写了一个示例生产者消费者问题,其中生产者产生从 1 到 10 的数字,而消费者必须显示它们。但只有消费者显示数字 1 并停止。

正如我所说,该程序写得不好,可能很荒谬,但我仍然想弄清楚为什么没有打印从 1 到 10 的所有数字的原因,因为当我编写代码而不是从示例中时,我会记得最好。

我正在使用两个变量来跟踪生产者或消费者活动的完成情况,以便我可以执行另一个。

/ getStatus(Consumer C) 传递消费者引用,以便生产者获得消费者的引用 .. 它可以用来了解消费者的状态 .. 就是这样 .. /

输出 :

在.. Suraj 的输入之后.. 现在程序运行良好.. 见下文..

导入java.lang.Math;公共课你好{

0 投票
1 回答
592 浏览

python - 事件驱动的线程创建

我一直在尝试解决以下问题的各种解决方案;无济于事。

我有大量(python)模块/脚本和一个杰出的脚本 K.py 。

当 K.py 执行时,它会生成一些信息,比如国家名称。现在,在其他模块(数百个)中,将有一些模块可以使用由 K.py 生成的信息(在本例中为国家名称)作为输入传递给它们来执行。递归地,上面的每个模块都会生成一些信息(城镇名称、街道号码等),这些信息可以作为其他模块的输入,等等..这当然会导致执行脚本的二叉树..

需要注意的地方。

  • 上面的模块/脚本(数百个)可以独立运行(它们不会以任何方式相互依赖)
  • 当所有模块都完成执行时,我应该能够做出判断(运行的 K.py 必须阻塞,直到执行模块的触发二叉树被“加入”)。

  • 如果对于每个信息 I 和可运行脚本 S(即 S 可以以 I 作为输入运行),我决定创建一个新的线程,我最终可能会得到指数数量的线程(否?)

如何使用 python 线程(任何 API)“安全地”实现解决方案?(伪代码?)

提前感谢您的智慧。

0 投票
1 回答
161 浏览

python - 当另一个线程使用 Tk 在 Python 中完成时,如何关闭加载屏幕?

我有一个使用 Tkinter 的 Python GUI。我必须通过 SSH 连接到另一个地方才能获取数据。我启动了一个新线程来执行此操作,以便 GUI 不会挂起。在此期间,我想弹出一个屏幕,让用户知道它正在加载。程序完成获取数据后,我想关闭加载屏幕。我必须做什么才能让我的主循环识别线程已完成?我尝试使用该线程关闭主循环中存在的加载屏幕,但后来我发现这不起作用。

我见过一些不使用 GUI 的生产者消费者模型,它们有 while 循环。但这对我没有帮助。我也不想下载和安装其他包,但是导入是可以的。感谢您的帮助!

0 投票
1 回答
886 浏览

java - Producer/consumer pattern in Java

I'm thinking how to implement the producer/consumer pattern in Java.

Assume that I have 3 threads and a List containing tasks (say it's about 5 tasks). Each thread grab the task from the list and execute it concurrently. My current approach is to use CountDownLatch

what I wanted to achieve is that if a thread fails when processing a task, it will be added back to the task list to be picked up again by current or any other thread, but with my current approach using CountDownLatch obviously it is not possible to do so because after doneSignal.countDown() is called, the thread assumes it already have finished the task.

What would be the best approach for this scenario? Is using Executor the only way?

0 投票
2 回答
353 浏览

c# - 消费者生产者 c# 实现,具有 1 个定时消费者,用于批量发送算法

我需要实现一个模块,该模块可以对字典有多个输入(多个线程写入字典)和 1 个定时消费者,该消费者使用该字典,使用一些 ISender 将其发送出去,并为新的大量数据清除字典。问题是我需要以这样的方式设计我的互锁,即消费线程拍摄批量的最快快照,同时允许生产线程继续写入新的已清除字典。您建议使用联锁和 ConcurrentDictionary 的最佳消费者生产者设计是什么?

此致!

0 投票
2 回答
1519 浏览

java - 在 Java 6 中实现多生产者/消费者模式的最佳方法

所以我有多个步骤 stage 1 -> stage 2 -> stage 3 -> stage4 所以在某些情况下生产者将是消费者,并且在每个阶段都有多个生产者/消费者来使用多个 cpu。万一某些数据包会错过步骤,即直接从阶段 1 进入阶段 4。

所以我打算为每个阶段设置一个类,与前一个阶段共享一个 BlockingQueue,但我也读到 ExecutorService 像生产者/消费者模式一样工作,所以我尝试使用最好的抽象。

然而,在我看来,使用 Executor,生产者位在提交给 executor 之前以顺序方式完成,这不是我想要的。

有人可以澄清一下吗?

0 投票
4 回答
3059 浏览

model - 使用 OpenMP 的消费者-生产者模型

我正在尝试使用 OpenMP 实现单生产者多消费者模型(我知道我也可以使用可能更适合的 boost 线程)。

这是我的代码,它相当简单并且使用线程感知队列类型:

这里的问题是生产者启动并推送数据,直到缓冲区已满,但消费者永远不会启动。如果我删除“for pragma”周围的部分,也会发生同样的情况。你能看出我的方法有什么问题吗?

我在编译过程中也收到了这个警告:

它指的是for循环在section中的嵌套。在这种情况下,正确的方法是什么?

感谢您的反馈意见。

编辑:刚刚发现这个相关问题, set_omp_nested(1) 对我没有帮助。我会尝试将它放在单独的功能中......