producer-consumer

    2热度

    1回答

    我正在试验TPL Dataflow,然后将其移植到我的生产代码中。 生产代码是一个经典的生产者/消费者系统 - 生产者生产消息(与金融领域相关),消费者处理这些消息。 我感兴趣的是,如果在某一点上生产者产生的速度远远超过消费者能够处理它的速度(系统将会爆炸,或者会发生什么),环境将会保持多么稳定&更重要的是什么在这些情况下做。 所以试图有类似的简单的应用程序,我想出了以下内容。 var buffe

    1热度

    1回答

    我正在使用Rebus和MSMQ。我尝试过Rebus,在这种情况下,我的制作人在不同的机器上向消费者发送消息,并且工作正常。 现在我需要使用多个消费者,并且需要在他们之间分配负载。我在生产者机器上运行http://mookid.dk/oncode/archives/3621中的样本。但是我从第一行的负载平衡器中得到了以下异常。 我有一个在我的本地机器命名为经销商队列和我的工人队列存在,他们的名字是正

    0热度

    1回答

    我想让ProducerThread生成高达10的随机值,然后期望ConsumerThread消费队列的这些值。某处生产者正在生成不止一次的添加值。我有一个概念,当我们调用一个对象的通知比那个线程会释放锁定并给予期待更新的线程机会时。 这里是代码,请纠正我的理解。 public class ProducerThread extends Thread { Queue<Integer> va

    0热度

    1回答

    我有许多生产者,不同类型的生产者/消费者对象,例如ProducerOfX,ProducerOfY,ConsumerOfX,ConsumerOfY。生产者将一个对象(X或Y)放入队列中,并通知其相关消费者(ProducerOfX仅通知ConsumerOfX)。 为了这个工作,我需要一个对象用作锁。我的问题是,我是否创建了一个对象,例如新的X()并获得ProducerOfX和ConsumerOfX来调

    0热度

    1回答

    我正在开发使用OCR进行C#WPF自动车牌识别。 该流程是,我从视频流MJPEG中获取图片,并且应将此图片传递到OCR以获取版号和其他详细信息。 问题是:视频流产生大约30帧/秒,CPU不能处理这么多的处理也需要大约1秒处理1帧,另外当我会得到很多帧在队列上,CPU将被使用70%(Intel I7 4th G)。 任何人都可以提出解决方案和更好的实施。 //This is the queue wh

    0热度

    1回答

    我正在研究一个问题,我正在实现一个模仿生产者 - 消费者范例的程序。当我只有一个生产者和一个消费者时,我使用的代码有效,但当我添加另一个生产者和另一个消费者时,它不起作用。 我花了一段时间在这个,似乎无法弄清楚为什么我得到错误Synchronization Error: Producer x Just overwrote x from Slot x。我通过各种测试跟踪了这个问题,问题在于生产者在注

    0热度

    1回答

    为什么在生产者消费者问题中使用有界缓冲区时,除了信号量之外,还必须使用互斥量?

    2热度

    2回答

    中编译的以下c代码中的分段错误我们模拟了一个有一位厨师的唐杜里鸡肉午餐自助餐厅和 多个客人,这与单个生产者/多个消费者问题类似。我们 实现一个程序与多个线程,其中每个线程持有一个厨师或客人。 我们还应用了一个同步工具 - 信号量,它可以解决将公共资源与多个线程同步的问题。通过这个项目,我们将学习如何创建多线程进程以及如何使用信号量来同步线程。 #include <stdlib.h> #inclu

    -2热度

    1回答

    我从这个site 在这两种生产者和消费者代码参照生产者 - 消费者例如,等待缠绕内部环,其inturn包裹内部同步块。 但一旦等待被返回,即从while循环中,我不知道线程是如何重新获取锁的,因为从队列中添加/删除项目仍在同步块内。 另外我觉得我们可能需要两个不同的锁,即一个用于消费者,一个用于生产者而不是锁定整个队列。因为我觉得任何时候消费者/生产者都可以在队列中工作。 如果我的理解错误,请让我

    0热度

    1回答

    3消费者2生产者。读取和写入一个缓冲区。 生产者A推动1个元素缓冲(长度N),生产者B推动2个元素缓冲。没有主动等待。我不能使用System V信号量。对于A公司 示例代码: void producerA(){ while(1){ sem_wait(full); sem_wait(mutex); Data * newData = (Data*) mallo