Je suis passé par des questions similaires sur Stackoverflow mais ne peut toujours pas obtenir une bonne réponse:signal et fente vs multithreading dans la bibliothèque Boost
Je suis assez perplexe sur la façon dont ce signal/slot est atteint. Q1: A partir du code suivant, sig est connecté à deux fonctions (Hello() et World()), et il semble que les fonctions sont appelées de manière sérialisée, ce qui implique également qu'une fonction (Hello ()) doivent être complétés avant d'aller dans une autre fonction (World())? => Programme à un seul fil
Q2: Y a-t-il un quelconque moyen d'activer le signal/slot multithread? (=> World() démarrera instantanément, pas besoin d'attendre Hello() pour terminer.) Ou si c'est non recommandé, cela vous dérangerait-il de me dire pourquoi?
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();
Sortie: Bonjour, monde!