producer-consumer

    0热度

    1回答

    我有一个与生产者和消费者有关的问题。我有1个生产者和3个消费者。制作人出示我放在队列中的信件,消费者拿着这封信。据认为,当两个消费者接受信件时,信件已经从队列中移除,但是有一个选项,消费者A和消费者C不能接受同一封信(可能A会先写信,那么con。B将首先采用第二或con。B,然后con C(或A)秒,但当A和C在一起时不可能)。 我写了一个解决这个问题的代码,但是现在我不能从函数中打印任何东西。

    0热度

    1回答

    我最近写了一个有界的无锁队列,并正在为它做一些测试。在测试中,一些线程产生素数(通过从某个数字开始,计数生产者线程对数量的6倍,使用Deterministic Miller Rabin测试检查每个数字,并将素数插入到队列中)以及一些线程消耗素数(通过删除队列中的元素并检查它们是否为素数)。生产者线程与每对中的一个配对产生等于1模6的素数,而另一个产生等于5模6的素数(所有等于0,2,3或4模6的数

    0热度

    1回答

    在classical producer-consumer problem中,当共享缓冲区已满且使用者等待共享缓冲区为空时,我们有生产者等待。我们有两个posix线程,一个生产者和其他工作者,使用sem_wait和sem_post为空信号量和完整信号量(两个计数信号量)相互同步。因此,信号量实现生产者 - 消费者代码看起来如下: procedure producer() { while (

    1热度

    1回答

    我必须在C++中编写多生产者 - 消费者系统,但是我试图将模型的每个部分(具有正确缓冲区的线程)放在一起。模型的基本功能是:我有一个执行函数的初始线程。返回的结果需要放入未确定数量的缓冲区中,因为函数处理的每个元素都不相同,并且需要在单个线程中处理。然后,通过存储在缓冲区中的数据,另一个线程需要获取这些缓冲区的数据以执行另一个功能,并且需要将这个返回再次放入一些缓冲区。 在我有创造了这个缓冲结构的

    2热度

    2回答

    我试图找到一种方法在下列情况下使用ThreadPoolExecutor: 我有一个单独的线程生产和线程池提交任务 一任务提交是同步的,并且将会阻塞,直到在任何给定时间任务可以由任务启动,只有固定数量的任务可以并行执行。无限数量的同时运行的任务可能会导致内存耗尽。 在提交任务之前,生产者线程始终检查自第一个提交的任务以来还没有超过一些最大构建时间。如果超过,则线程关闭,但当前在线程池上运行的任何任务

    4热度

    3回答

    我想这是一种代码审查,但这里是我的生产者/消费者模式的实现。我想知道的是会有这种情况,ReceivingThread()或SendingThread()方法中的while循环可能会停止执行。请注意,从多个不同的线程调用EnqueueSend(DataSendEnqeueInfo info),我可能无法在这里使用任务,因为我必须在单独的线程中使用命令。 private Thread mReceivi

    0热度

    1回答

    我试图解决使用Java中的监视器的单个消费者/生产者问题,代码如下。当我运行这段代码时,它最终会陷入困境。最典型的情况是消费者拨打wait(),然后生产者继续生产,但不能通知消费者(尽管它会呼叫notify())。我不知道为什么会发生。 Java代码: import java.util.*; class Monitor { int length; int size;

    2热度

    3回答

    根据GeeksforGeeks-ProducerConsumerProblem,我很困惑与第二运动: 尽量让你的程序产生一个项目,并立即之后,消费者在任何其他消耗它物品是由消费者制作的。 如何解决? 我觉得在生产者生产一个项目后,我们可以在生产者向列表添加一个项目后记录大小。 while(list.size()== recordSize)wait(); 这是正确的吗? 谢谢你的时间。

    0热度

    2回答

    在生产者 - 消费者模型中(一个生成项的线程,将其放入阻塞队列中,另一个线程在无限循环中使用它们),建议通过发送导致循环中断的毒物来关闭线程。 AFAIK,这可以通过完成: null(气馁一般由BlockingQueue禁止) 它永远不会被制片人创建的值(需要额外的测试,也许汽化一些脑细胞) 一个包装型,并把每一个产生的值,其中包含的值作为唯一的属性并且被设置为空,以便指示关断(例如,番石榴框架O

    0热度

    1回答

    在我的应用程序中,只有很少的线程使用while-on-volatile-boolean循环和BlockingQueue来处理相当简单的对象 - 它们处理的消息(流水线体系结构)。 最近我遇到android.os.Looper类与它的朋友,这似乎做同样的工作,但他们被放置在API,所以有没有任何好处(特别是性能)使用它们,而不是手写循环显式队列?或者它只是某种“API糖”?