我已经通过#2类似的问题走了,但仍然不能得到一个很好的答案:信号和Boost库插槽VS多线程
我对这个信号/插槽是如何实现的相当困惑。 Q1:从以下代码中,sig连接到两个函数(Hello()和World()),并且似乎函数以序列化方式调用,这也意味着一个函数(Hello( ))需要在进入另一个函数(World())之前完成? =>单线程程序
问题二:是否有无法启用多线程信号/槽?(=> World()将立即启动,不需要等待Hello()完成。)或者如果它是不推荐,你介意告诉我为什么?
Sample codes on Boost website:
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();
输出: 你好,世界!