我是 C++ 和 boost 的新手。
作为硕士论文的一部分,我编写了一个模拟统计模型的程序。在计算过程中,我使用 boost::thread 来处理我的“质心 vector 中心”,以节省一些计算时间。到目前为止一切顺利。
现在,我想从 boost::thread 中获取每个结果(每次一个元素)并将其传递给正在运行的线程,该线程将执行递归回归。
我的问题:
- 如何将我的新计算元素传递给现有线程?
- 当我传递新元素时,我如何“唤醒”线程?
如果有人能给我指出一个现有的例子,我会很高兴。
最佳答案
最简单的方法是使用 std::queue , boost::mutex和 boost::conditional_variable .在推送到队列调用 conditional_variable.notify_one()
之后,通过互斥锁包装对队列的任何访问。在消费者线程中等待 conditional_variable 直到任何结果准备就绪,然后处理它。
关于c++ - 在线程已经启动后将变量传递给线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4805968/