问题标签 [producer-consumer]
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.
flash - Flex/Flash NetConnection 和消费者/生产者的区别
Flex 中的 NetConnection 和 Consumer/Producer 有什么区别?似乎他们都使用 RTMP,但消费者/生产者使用 Channels 而 NetConnection 没有。消费者/生产者是否在下面使用 NetConnection?
c# - C# 生产者/消费者
我最近遇到了一个生产者/消费者模式 c# 实现。它非常简单并且(至少对我而言)非常优雅。
它似乎是在 2006 年左右设计的,所以我想知道这个实现是否
- 安全
- 仍然适用
代码如下(原始代码在http://bytes.com/topic/net/answers/575276-producer-consumer#post2251375引用)
.net - 是否有消费者不消费事件的服务总线解决方案?(多个消费者收到相同的事件)
我正在阅读 ActiveMQ,这似乎是服务总线的一个很好的实现,生产者可以发布消息,其他进程可以接收它们。
但是,在阅读文档时,看起来生产者在发送消息时必须提供“端点”。
我宁愿反过来:我的生产者发布事件“导入作业开始”、“导入作业完成”等,任何对某些事件类别感兴趣的消费者都可以订阅和接收这些事件。但是,消费者不应消费该事件,因为它不再发送给其他订阅者。
拥有这种属性的最佳产品是什么?
约束: - 它应该至少有 .Net 和 php 的接口 - 它应该跨机器边界工作
谢谢
.net - .NET 4 Parallel Extensions 是否包含无锁生产者/消费者队列的实现?
.NET 4 Parallel Extensions 是否包含无锁生产者/消费者队列的实现?是否有任何类或接口可以帮助我正确实现这种模式?
谢谢!
java - 缓冲的后台 InputStream 实现
我编写了包装其他流的后台InputStream
(和OutputStream
)实现,并在后台线程上预读,主要允许在处理解压缩流的不同线程中进行解压缩/压缩。
这是一个相当标准的生产者/消费者模型。
这似乎是一种通过读取、处理和写入数据的简单进程充分利用多核 CPU 的简单方法,从而更有效地利用 CPU 和磁盘资源。也许“高效”不是最好的词,但与直接从 a 读取ZipInputStream
和直接写入a 相比,它提供了更高的利用率,而且我更感兴趣的是,它减少了运行时间ZipOutputStream
。
我很高兴发布代码,但我的问题是我是否正在重新发明现有(并且更频繁地使用)库中现成的东西?
编辑 - 发布代码...
我的代码BackgroundInputStream
如下(BackgroundOutputStream
非常相似),但有些方面我想改进。
- 看起来我工作太努力了,无法来回传递缓冲区。
- 如果调用代码丢弃对 的引用
BackgroundInputStream
,则backgroundReaderThread
将永远存在。 - 信号
eof
需要改进。 - 异常应该传播到前台线程。
- 我想允许使用提供的线程
Executor
。 - 该
close()
方法应该向后台线程发出信号,并且不应该关闭包装的流,因为包装的流应该由从中读取的后台线程拥有。 - 关门后做一些傻事,比如看书,应该得到适当的照顾。
msmq - MSMQ - 快速生产者/慢消费者
我对消息传递(使用 MSMQ)有问题,这是快速生产者/慢消费者的一种变体。有没有办法在私有 MSMQ 队列中获得未使用的消息计数?我想用它来限制生产者。
我想在 MSMQ 中使用信号量范式,其中生产者应用程序仅在未完成的消息计数小于指定数量时才发送消息。
本质上,我想做类似以下的事情
我的配置:Win XP/2003 和 MSMQ 3.0
java - 生产者/消费者工作队列
我正在努力寻找实现我的处理管道的最佳方式。
我的生产者将工作提供给 BlockingQueue。在消费者方面,我轮询队列,将我得到的内容包装在一个 Runnable 任务中,然后将其提交给一个 ExecutorService。
这并不理想;当然,ExecutorService 有自己的队列,所以真正发生的是我总是完全排空我的工作队列并填充任务队列,随着任务完成,任务队列会慢慢清空。
我意识到我可以在生产者端排队任务,但我真的不想那样做——我喜欢我的工作队列的间接/隔离是哑字符串;这真的与制片人无关,他们会发生什么。强制生产者对 Runnable 或 Callable 进行排队会破坏抽象,恕我直言。
但我确实希望共享工作队列代表当前的处理状态。如果消费者跟不上,我希望能够阻止生产者。
我很想使用 Executors,但我觉得我在与他们的设计作斗争。我可以喝部分 Kool-ade,还是必须一饮而尽?我在抵制排队任务方面是不是走错路了?(我怀疑我可以设置 ThreadPoolExecutor 以使用 1 任务队列并覆盖它的执行方法来阻止而不是拒绝队列满,但这感觉很糟糕。)
建议?
sqlite - 读写器进程 SQLite
我有两个过程:
- 每秒写入两个表(ish)
- 定期从所述表中读取
我知道使用 SQLite,任何写入都会锁定整个数据库,因此有时第二个进程可能会因数据库锁定而失败。
您有什么建议可以完全消除这两个进程接触同一个数据库的需要吗?例如,我可以将正在写入的数据库中的数据自动传输到第二个只读数据库吗?
谢谢 :)
java - 使用队列的生产者/消费者线程
我想创建某种Producer/Consumer
线程应用程序。但我不确定在两者之间实现队列的最佳方式是什么。
所以我有两个想法(这两个想法都可能完全错误)。我想知道哪个会更好,如果它们都很糟糕,那么实现队列的最佳方法是什么。我关心的主要是我在这些示例中对队列的实现。我正在扩展一个 Queue 类,它是一个内部类并且是线程安全的。下面是两个示例,每个示例有 4 个类。
主班——
消费类——
制作人班——
队列类-
或者
主班——
消费类——
制作人班——
队列类-
去!
c++ - 将 pthread 条件变量与 rwlock 一起使用
我正在寻找一种在 C++ 中将pthread rwlock结构与条件例程一起使用的方法。
我有两个问题:
第一:这怎么可能,如果我们不能,为什么?
第二:为什么当前的 POSIX pthread 没有实现这种行为?
为了理解我的目的,我解释了我的用途:我有一个生产者-消费者模型来处理一个共享数组。当数组为空时,消费者将 cond_wait,但在读取某些元素时会 rdlock。当从数组中添加(+信号)或删除元素时,生产者会出错。
使用 rdlock 代替 mutex_lock 的好处是提高性能:使用 mutex_lock 时,多个读取器会阻塞,而使用 rdlock 多个读取器不会阻塞。