Comment est-ce que boost fait une connection inter-thread ? Avec quelle boucle d'événements il s'intègre ?
Dans Qt, chaque QObject « vit » dans un thread (QObject::thread()) et si le thread est différent, un événement Qt est posté dans la boucle d'événement du thread en question. (Et la boucle d'événement Qt peux facilement être intégrée dans les boucles d'événement d'autres bobliothèques)
Comment est-ce que boost fait la connection autmatique avec les noms qui vont biens ? Comment font ils sans l'introspection fournie par moc ?
Ce que Qt fait est que le moc génère du code C++ qui contiens le nom (sous forme de char*) des slots et signaux, et ainsi faire une connection automatique (avec QMetaObject::connectSlotsByName)
Les signaux de boost peuvent en effet faire beaucoup de chose, mais Qt rends ça plus facile.
De plus, grâce à l'introspection fournie par moc, il est facile de faire des bindings avec des languages de scripts comme javascript et QML.
[^] # Re: Signaux / slot
Posté par Gof (site web personnel) . En réponse à la dépêche Projet Qt5 : lecteur de musique. Évalué à 7.
Comment est-ce que boost fait une connection inter-thread ? Avec quelle boucle d'événements il s'intègre ?
Dans Qt, chaque QObject « vit » dans un thread (QObject::thread()) et si le thread est différent, un événement Qt est posté dans la boucle d'événement du thread en question. (Et la boucle d'événement Qt peux facilement être intégrée dans les boucles d'événement d'autres bobliothèques)
Comment est-ce que boost fait la connection autmatique avec les noms qui vont biens ? Comment font ils sans l'introspection fournie par moc ?
Ce que Qt fait est que le moc génère du code C++ qui contiens le nom (sous forme de char*) des slots et signaux, et ainsi faire une connection automatique (avec QMetaObject::connectSlotsByName)
Les signaux de boost peuvent en effet faire beaucoup de chose, mais Qt rends ça plus facile.
De plus, grâce à l'introspection fournie par moc, il est facile de faire des bindings avec des languages de scripts comme javascript et QML.