Kann mir jemand sagen, sind boost::signals
Slots synchron oder asynchron aufgerufen?Werden boost :: signals Slots synchron oder asynchron aufgerufen?
Zum Beispiel habe ich dieses Stück Code:
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";
Wie funktioniert die Ausführungs-Thread Arbeit? Wartet die Ausführung auf Hello()
und World()
, um auszuführen und direkt danach "Foo"
gedruckt wird oder ruft es asynchron (Drucken "Foo" und Aufrufen von Hello()
und World()
ausführen in einer undefinierten Reihenfolge)?
Docs hier scheinen andere anzuzeigen: http://www.boost.org/doc/libs/1_54_0/doc/html/signals2/tutorial.html#idp164798944 – sje397
Sie haben Recht. Ich war überzeugt, dass die Bestellung nicht spezifiziert wurde, aber dieser Teil der Dokumentation hat sich in den letzten vier oder fünf Versionen nicht geändert. Ich habe meine Antwort korrigiert. –