我已经在Stackoverflow上查看了类似的问题,但仍然找不到一个好的答案:
我对这个信号/槽机制感到困惑。
问题1:从下面的代码中可以看出,sig连接了两个函数(Hello()和World()),它们似乎是按序列化方式调用的,这也意味着一个函数(Hello())需要在进入另一个函数(World())之前完成? => 单线程程序
问题2:是否有任何方法可以启用多线程信号/槽?(=> World()将立即启动,不需要等待Hello()完成。)或者如果不建议使用,您介意告诉我原因吗?
struct Hello
{
void operator()() const { std::cout << "Hello";}
};
struct World
{
void operator()() const { std::cout << ", World!" << std::endl;}
};
boost::signal<void ()> sig;
sig.connect(Hello());
sig.connect(World());
sig();
输出: 你好,世界!