Question

Selon le Boost Documentation , plusieurs threads appellent io_service::run() met en place un pool de threads que le service IO peut utiliser pour effectuer des tâches asynchrones. Il stipule explicitement que tous les fils qui se sont joints à la piscine sont considérés comme équivalents.

Est-ce que cela implique qu'il est impossible d'avoir un thread séparé pour la lecture d'une prise et un autre pour écrire? S'il est possible, comment pourrais-je mettre cela?

Était-ce utile?

La solution

Tout thread qui appelle io_service::run() peut être utilisé pour appeler des gestionnaires asynchrones. Mais vous ne pouvez pas spécifier précisément quel thread exécute quel type d'opération. Par exemple, si vous appelez io_service :: run () dans 2 fils de fond, et vous deviez appeler socket::async_send et socket::async_receive dans un fil conducteur, vos gestionnaires seront exécutés dans un thread d'arrière-plan qui est actuellement disponible. Alors oui, toutes les discussions sont essentiellement considérés comme équivalents, et peuvent être utilisés pour toute opération asynchrone.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top