Ich habe einen benutzerdefinierten streambuf für gepufferte Netzwerk-Socket-I/O, Override-Unterlauf, Überlauf und Sync abgeleitet, so dass Unterlauf ist Thread-Safe mit dem Satz der anderen beiden, (Ich habe separaten Eingang und Ausgang interne Puffer) . Das funktioniert gut, aber ich möchte dies für Vollduplex-I/O verwenden, wo ein Thread eingeben kann, während ein anderer ausgibt, also möchte ich einen istream für den empfangenden Thread und ostream für den sendenden verwenden, während ich das Netzwerk teile streambuf als das alles Socket Zeug abstrahiert. Meine Frage ist, inwiefern sind die streambuf-Mitglieder von Eingabeoperationen auf einem istream betroffen, die von den streambuf-Mitgliedern getrennt sind, die von Ausgabeoperationen in einem ostream betroffen sind, wenn die Eingabe- und Ausgabepuffer getrennt sind?istream und ostream mit gemeinsamem streambuf, beide Threads sicher für Duplex I/O?
Es wäre besser, in der Lage zu sein, dies zu tun, anstatt die Socket-Sachen von meiner Streambuf-Abstraktion trennen zu müssen, damit der Socket zwischen istream und ostream mit separaten streambufs geteilt werden kann - dann würde ich auch zwei Versionen von der streambuf - einer mit einem einzigen internen Puffer (nur zur Verwendung in entweder istream oder ostream) und einer mit zwei internen Puffern, wie ich sie jetzt für die Verwendung in iostream ... habe, saugt als zusätzliche Klassen und Code-Duplizierung.
Auf den ersten Blick hatte ich einige Zweifel, aber das sieht nach der besten Frage aus, die ich seit einiger Zeit gesehen habe. +1 – Potatoswatter