小编Jen*_*ens的帖子

信号和线程 - 设计决策的好坏?

我必须编写一个执行高度计算密集型计算的程序.该程序可能会运行几天.可以在不同的线程中轻松分离计算,而无需共享数据.我想要一个GUI或一个Web服务,告诉我当前的状态.

我目前的设计使用BOOST :: signals2和BOOST :: thread.它编译并到目前为止按预期工作.如果一个线程完成一次迭代并且有新数据可用,则它会调用一个连接到GUI类中的插槽的信号.

我的问题:

  • 这种信号和线程的组合是一个明智的想法吗?我是另一个论坛,有人建议别人不要"走这条路".
  • 附近是否有潜在的致命陷阱,我没有看到?
  • 我期望的现实,这将是"容易"用我的GUI类来提供Web界面或QT,一个VTK或任何窗口?
  • 有没有更聪明的选择(像其他升压库),我忽略了?

以下代码编译

g++ -Wall -o main -lboost_thread-mt <filename>.cpp
Run Code Online (Sandbox Code Playgroud)

代码如下:

#include <boost/signals2.hpp>
#include <boost/thread.hpp>
#include <boost/bind.hpp>

#include <iostream>
#include <iterator>
#include <string>

using std::cout;
using std::cerr;
using std::string;

/**
 * Called when a CalcThread finished a new bunch of data.
 */
boost::signals2::signal<void(string)> signal_new_data;

/**
 * The whole data will be stored here.
 */
class DataCollector
{
    typedef boost::mutex::scoped_lock scoped_lock;
    boost::mutex mutex;

public:
    /**
     * Called by CalcThreads call the …
Run Code Online (Sandbox Code Playgroud)

c++ boost-thread boost-signals2

6
推荐指数
2
解决办法
5477
查看次数

标签 统计

boost-signals2 ×1

boost-thread ×1

c++ ×1