मैंने buffered नेटवर्क सॉकेट I/O, अंडरफ्लो, ओवरफ़्लो, और सिंक ओवरराइड करने के लिए एक कस्टम स्ट्रीमबफ लिया है ताकि अंडरफ्लो दूसरे दो के सेट के साथ पारस्परिक रूप से थ्रेड-सुरक्षित हो, (मेरे पास अलग इनपुट और आउटपुट आंतरिक बफर हैं) । यह ठीक काम करता है, लेकिन मैं इसे पूर्ण डुप्लेक्स I/O के लिए उपयोग करना चाहता हूं, जहां एक थ्रेड इनपुट कर रहा है, जबकि कोई अन्य आउटपुट कर रहा है, इसलिए मैं नेटवर्क भेजने के दौरान प्राप्त करने के लिए प्राप्त थ्रेड और ओस्ट्रीम के लिए एक आईट्रीम का उपयोग करना चाहता हूं स्ट्रीमबफ के रूप में सभी सॉकेट सामान सार तत्व। मेरा सवाल यह है कि इनपुट और आउटपुट बफर अलग होने पर ओस्ट्रीम पर आउटपुट ऑपरेशंस से प्रभावित स्ट्रीमबफ सदस्यों से इन्सट्रीम विघटन पर इनपुट ऑपरेशंस द्वारा इनपुट ऑपरेशन से प्रभावित कितने हद तक हैं?आईप्रीम और ओस्ट्रीम साझा स्ट्रीमबफ परस्पर थ्रेड-सुरक्षित डुप्लेक्स I/O के लिए सुरक्षित है?
यह मेरे स्ट्रीमबफ अमूर्तता से सॉकेट सामान को अलग करने के बजाय ऐसा करने में सक्षम होना बेहतर होगा, इसलिए सॉकेट को अलग-अलग स्ट्रीमबफ के साथ आईट्रीम और ओस्ट्रीम के बीच साझा किया जा सकता है - फिर मुझे दो संस्करणों की भी आवश्यकता होगी स्ट्रीमबफ - एक एकल बफर के साथ (केवल इस्ट्रीम में या केवल ओस्ट्रीम में उपयोग के लिए), और मेरे पास अब दो आंतरिक बफर के साथ, Iostream में उपयोग के लिए ... अतिरिक्त कक्षाओं और कोड डुप्लिकेशन के रूप में बेकार है।
पहली नज़र में मुझे कुछ संदेह थे, लेकिन यह कुछ समय में मैंने देखा सबसे अच्छा सवाल जैसा दिखता है। +1 – Potatoswatter