Qualcuno può dirmi sono gli slot boost::signals
chiamati in modo sincrono o asincrono?Gli slot boost :: signal sono chiamati in modo sincrono o asincrono?
Per esempio io ho questo pezzo di codice:
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";
Come funziona il thread di esecuzione? L'esecuzione attende Hello()
e World()
da eseguire e subito dopo viene stampato lo "Foo"
o li chiama in modo asincrono (stampando "Foo" e chiamando Hello()
e World()
eseguiti in un ordine non definito)?
I documenti qui sembrano indicare diversamente: http://www.boost.org/doc/libs/1_54_0/doc/html/signals2/tutorial.html#idp164798944 – sje397
Hai ragione. Ero convinto che l'ordine non fosse specificato, ma quella parte della documentazione non è cambiata nelle ultime quattro o cinque versioni. Ho corretto la mia risposta. –