condition-variable

    0热度

    1回答

    我试图实现一个生产者 - 消费者模式。我做了功课,但仍然无法确定。具体实施如下: boost::mutex m_mutex; boost::container::deque<T> m_buffer; boost::condition_variable fifo_loaded; T pop(void) { boost::mutex::scoped_lock lock(m_mute

    0热度

    1回答

    问题: 首先,这是我的问题的一个简化示例,它实际上是已经由其他人编写的大型框架的一部分,我必须在其中调整我的代码。 我有3个功能。两个函数(函数1和函数2)被程序的其他部分异步同步调用。 我的最后一个函数(function3)连续运行,就像一个while循环一样,它唯一做的就是在每次代码迭代时触发一个事件代码。 我只希望这个最后一个函数在两个其他函数之一完成迭代/被调用时运行。 我不能改变他们被调

    6热度

    2回答

    假设我有两个线程和一个共享C++ 11条件变量。 如果thread1调用notify并在那个thread2调用等待之后会发生什么? 将永久thread2块,否则它将继续它的工作由于thread1的通知调用? 编辑: enum bcLockOperation { bcLockOperation_Light = -1, bcLockOperation_Medium = 50,

    2热度

    1回答

    我想写一个自定义互斥锁,以便每个线程都可以提供一个参数,该参数表示当前线程想要执行的操作的复杂性。如果操作的复杂度较低,其他线程将像循环锁一样循环,但如果操作的复杂度为中,每个线程将迭代50次,然后将通过条件变量休眠,如果操作非常复杂,其他线程将直接睡觉。 enum LockOperation { LockOperation_Light = -1, LockOpe

    8热度

    4回答

    我目前正在研究一个模拟扩展Producer-Worker模型的问题。在这个问题中,有3个工人和3个工具可供使用,并且为了工作人员他们需要2个工具(和材料,但这些工具是无关紧要的)。如果Vault中有> = 2个工具,则工作人员将采用2.否则,他们将等待条件变量,该条件变量在> = 2时将发出信号。 这对2名工人来说很好:一个人会工作,然后将工具返回到保险库,另一个等待的工作人员将被唤醒并采取2个工

    0热度

    2回答

    我需要在我的代码中使用一个条件变量。查看android API,我看到包android.os包含ConditionVariable。但是我也在java.util.concurrent.locks下找到了Condition。 这两个类似乎是为相同的目的而设计的。 Condition.await() <-> ConditionVariable.block() Condition.signal() <

    1热度

    1回答

    Thread.h类实现了像Java中的Thread类一样的运行方法,因此每个继承Thread的类都会运行。 在下面的例子中运行两个线程:Producer和Reader,第一个(Producer)在无限循环中打印一个计数器,第二个线程(Reader)1)调用等待产生,2)写入一些int和3)通知方法。等待使用一个condition_variable变量。 问题是“producer-> wait();

    2热度

    1回答

    我在vtk/QT环境中用C++编写程序。然而,这个问题主要是方法/算法的问题。 我被困在试图我的三个正在运行的线程同步: 1线:一次传送一个样本,并将其添加到“输出”缓冲 2.线程:接收一次一个样,并将其添加到“输入”缓冲区中 3.线程:从“输出”和“输入”缓冲区中提取数据并将它们广告到单独的绘图缓冲区中进行渲染。 我希望这些线程能够同步运行,并且在那里为了尝试一种方法,我使用一个条件变量以及每个

    1热度

    1回答

    我试图强制执行一对Android线程之间的同步以实现游戏编程目的。我已经分配了一个处理大多数职责的游戏线程和一个渲染线程,它负责交换缓冲区和渲染。当我第一次询问线程同步时,我将ConditionVariable对象称为强制线程阻塞直到并发任务完成的有用工具。 我的源代码是这样的:以正确的顺序执行 ... final ConditionVariable bufferLock = n

    4热度

    1回答

    我想使用C++ 11 std :: condition_variable,但是当我尝试锁定与第二个线程关联的unique_lock时,我得到一个异常“避免资源死锁”。创建它的线程可以锁定和解锁它,但不是第二个线程,尽管我非常确定unique_lock不应该在第二个线程试图锁定它的时候锁定。 FWIW我在Linux中使用gcc 4.8.1,使用-std = gnu ++ 11。 我已经在condit