c++ - 在线程已经启动后将变量传递给线程

标签 c++ boost boost-thread

我是 C++ 和 boost 的新手。

作为硕士论文的一部分,我编写了一个模拟统计模型的程序。在计算过程中,我使用 boost::thread 来处理我的“质心 vector 中心”,以节省一些计算时间。到目前为止一切顺利。

现在,我想从 boost::thread 中获取每个结果(每次一个元素)并将其传递给正在运行的线程,该线程将执行递归回归。

我的问题:

  • 如何将我的新计算元素传递给现有线程?
  • 当我传递新元素时,我如何“唤醒”线程?

如果有人能给我指出一个现有的例子,我会很高兴。

最佳答案

最简单的方法是使用 std::queue , boost::mutexboost::conditional_variable .在推送到队列调用 conditional_variable.notify_one() 之后,通过互斥锁包装对队列的任何访问。在消费者线程中等待 conditional_variable 直到任何结果准备就绪,然后处理它。

关于c++ - 在线程已经启动后将变量传递给线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4805968/

相关文章:

c++ - 从基类方法调用子类虚方法

c++ - 使用 leadtools 在 QT creator 下读取和生成 Qr

c++ - 如何检查组合框是下拉列表还是下拉列表?

c++ - 为什么不 boost 元组运算符 == 和 << 编译?

c++ - boost::intrusive::list with the auto-unlink hook:我可以使用列表中的值来确定列表是否只有一个元素吗?

c++ - boost microsec_time_clock.hpp 警告 C4244

C++ 指针和动态数组以及删除运算符

c++ - 可以将多个 boost::signal 连接到 1 个插槽吗?

c++ - 使用条件编写器提升 shared_mutex

c# - 使用 boost 库在 C++ 中实现多线程的正确方法