【发布时间】:2009-10-19 22:50:46
【问题描述】:
我在 Stackoverflow 上遇到过类似的问题,但仍然无法得到一个好的答案:
我很困惑这个信号/槽是如何实现的。
Q1:从下面的代码看,sig连接了两个函数(Hello()和World()),看起来函数是序列化调用的,这也暗示了,一个函数(Hello() ) 需要在进入另一个函数(World()) 之前完成吗? => 单线程程序
Q2:是否有启用多线程信号/槽?(=> 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();
输出: 你好,世界!
【问题讨论】:
标签: c++ multithreading boost signals-slots