मैं एक पीसी पर नेटवर्क-प्रकार स्ट्रीम का अनुकरण करना चाहता हूं।स्ट्रीम जिसमें अलग-अलग लेखन और पढ़ने की स्थिति है
मैंने इसे Stream
बनाकर किया है जो 2 अंतर्निहित धाराओं में से एक है, एक को पढ़ने के लिए और दूसरे को लिखने के लिए।
मैं फिर 2 वर्गों को स्वैप करने वाले इस वर्ग के 2 उदाहरण बना देता हूं। वर्तमान में मैं 2 अंतर्निहित धाराओं के रूप में MemoryStream
एस का उपयोग कर रहा हूं।
अब मुझे परेशानी है कि अगर मैं 0 बाइट्स को MemoryStream
पर लिखता हूं तो इसकी स्थिति एक्स होगी और यदि मैं Read
करता हूं तो मुझे कोई डेटा नहीं मिलता है, क्योंकि मैं स्ट्रीम के अंत में हूं।
यह देखते हुए कि मैं आम तौर पर कुछ पढ़/लिखता हूं (इसलिए प्रत्येक लिखने के बाद पद को 0 पर रीसेट नहीं किया जा सकता है) क्या Stream
क्या मैं इस व्यवहार को प्राप्त करने के लिए उपयोग कर सकता हूं?
प्रभावी रूप से मैं एक प्रकार की बाइट कतार चाहता हूं जिसे मैं लिख सकता हूं और स्ट्रीम के रूप में पढ़ सकता हूं।
अर्थात (अनदेखी वास्तविक विधि तर्क)
MyStream.Write({ 1, 2, 3, 4, 5, 6 });
MyStream.Write({ 7, 8 });
MyStream.Read(3) // Returns { 1, 2, 3 }
MyStream.Read(4) // Returns { 4, 5, 6, 7 }
केवल मुद्दा इस कोड को सुरक्षित थ्रेड नहीं है। यदि आप इस कोड का उपयोग एकाधिक थ्रेड के साथ कर रहे हैं, तो आप यह सुनिश्चित करना चाहेंगे कि एक ही समय में पढ़ने और लिखने के लिए कुछ भी प्रयास न करें। पढ़ें और लिखें विधियों के ऊपर आप [MethodImpl (MethodImplOptions.Synchronized)] को जोड़ सकते हैं (थ्रेड) सुरक्षित। – Qubei