मैं जंग websocket library उपयोग कर रहा हूँ बातें करने के लिए बात करने के लिए और मैं इस सूत्र है कि इस तरह मोटे तौर पर दिखता है:पढ़ना दो अवरुद्ध iterators
thread::spawn(move || {
for message in receiver.incoming_messages() {
/* Do same stuff */
}
});
:
thread::spawn(move || {
while let Ok(Message::Text(text)) = receiver.recv_message() {
/* Do some stuff */
}
});
ऊपर रिसीवर भी एक अवरुद्ध इटरेटर हो सकता है
मैं इस धागे को एक सिग्नल भेजना चाहता हूं जो इसे चीजों को रोकने से रोकने के लिए कहता है। मैंने सोचा कि mpsc::channel
इस सिग्नल भेजने के लिए बहुत अच्छा होगा। select!
जाने का तरीका प्रतीत होता था, लेकिन यह केवल तभी काम करता है जब सभी चैनल mpsc::channel
प्रकार हैं।
क्या ऐसा कुछ है जो दो अवरोधक इटरेटर्स में शामिल हो सकता है और आउटपुट प्रदान करता है क्योंकि डेटा आता है? या इस मुद्दे के लिए कोई अन्य समाधान? मैं इनपुट के प्रत्येक स्रोत के लिए धागा बनाने और अपनी खुद की कतार का प्रबंधन करने से बचना चाहता हूं।
व्यस्त प्रतीक्षा ... (यानी, वे यात्रा के अंत में कुछ भी है, और उपज/नींद अगर अगर आप कुछ भी नहीं मिला है देखने के लिए बढ़ता सभी चैनलों पर पाश) –
@MatthieuM। एक अवरोधक इटरेटर पर एक कैसे देख सकता है? हो सकता है कि मुझे कुछ याद आ रहा है, लेकिन क्योंकि यह अवरुद्ध हो रहा है, तब तक नियंत्रण वापस नहीं किया जाएगा जब तक कि इटरेटर की जांच की जा रही कोई वस्तु उपलब्ध न हो। ओपी के सुझाव के रूप में, आपको प्रतिरूपण अवरोधक प्रति थ्रेड बनाना होगा। – Shepmaster
@ शेमपस्टर: दंडित; खुशी है कि यह केवल एक टिप्पणी थी: पी हालांकि मैंने केवल जेस्ट में सुझाव दिया है क्योंकि यह वास्तविक समाधान की तुलना में एक हैक है: x –