boost :: signals插槽是同步还是异步调用的?

Jac*_*ieg 6 c++ boost asynchronous execution boost-signals

任何人都可以告诉我boost::signals同步或异步调用的插槽吗?

例如,我有这段代码:

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();

cout << "Foo";
Run Code Online (Sandbox Code Playgroud)

执行线程如何工作?执行是等待Hello()还是World()执行,之后"Foo"是打印还是异步调用它们(打印"Foo"并以未定义的顺序调用Hello()World()执行)?

Nic*_*tti 8

Boost.Signals中,同步调用时隙,并且按照添加它们的顺序调用连接到同一信号的时隙.线程安全变体Boost.Signals2也是如此