Bonjour,
Je butte actuellement sur un problème de lecture/écriture concurrente avec un boost::asio:ip::tcp::iostream. L'écriture sur une instance de cette classe est bloquante tant qu'une lecture (bloquante elle aussi) est en cours.
Si j'ai bien compris, c'est une limitation du iostream encapsulant le streambuf TCP. La sentry associée veille à ce que le streambuf soit accédé de manière exclusive. Ca me choque un peu dans la mesure où les zones get & set d'un streambuf ne constituent pas forcément une même fifo (et même si c'était le cas on pourrait imaginer un comportement non bloquant) mais, si je ne me suis pas mélangé les pinceaux, c'est pourtant bien ce qui se passe.
Il est néanmoins possible de lire et d'écrire simultanéement sur une socket boost (le streambuf TCP gérant bien deux buffers décorélés) alors pourquoi ce comportement de la part d'un boost::asio:ip::tcp::iostream ? Il y aurait-il un moyen de construire un iostream permettant lecture et écriture simultanées ?
Partager