En gros, ici thread-safe veut dire :
Imagine que tu as une classe qui récupère des données sur le réseau. Disons que cette classe est instanciée dans un thread T1. Hop, elle a un message. Elle déclenche alors le signal
jai_recu_un_message(const std::string&)
Ce signal est connecté à un "slot" d'un widget de ton interface graphique qui affiche tel quel le message reçu. Disons qu'il s'appelle
affiche(const std::string&);
Evidemment, ton interface graphique est instanciée et gérée dans un thread T2 séparé de T1.
Avec boost.signals premier du nom, ce scénario n'était pas possible. Tu ne peux pas connecter un signal de quelque chose qui est dans un thread T1 avec un slot de quelque chose qui est dans un thread T2. Avec boost.signals2, c'est possible car les mécanismes de connexion et de déclenchement gèrent le fait que les différentes choses peuvent se situer dans des threads différents. C'est ça, être thread-safe.
Partager