के साथ IObservable/IObserver का उपयोग कैसे करें मुझे एहसास हुआ कि जब मैं एकाधिक धागे का उपयोग करके एक समवर्ती कतार में आइटम्स को संसाधित करने का प्रयास कर रहा हूं, जबकि एकाधिक धागे इसमें आइटम डाल सकते हैं, आदर्श समाधान प्रतिक्रियाशील एक्सटेंशन का उपयोग करना होगा समवर्ती डेटा संरचनाओं के साथ।ConcurrentQueue या ConcurrentStack
While using ConcurrentQueue, trying to dequeue while looping through in parallel
तो मैं उत्सुक हूँ अगर वहाँ एक LINQ (या PLINQ) क्वेरी कि लगातार के रूप में आइटम इसमें लगाया जाता है dequeueing किया जाएगा करने के लिए किसी भी तरह से है:
मेरे मूल प्रश्न पर है।
मैं इसे इस तरह से काम करने की कोशिश कर रहा हूं जहां मेरे पास कतार में धक्का देने वाले उत्पादकों की संख्या और सीमित संख्या में धागे की प्रक्रिया हो सकती है, इसलिए मैं डेटाबेस को अधिभारित नहीं करता हूं।
यदि मैं आरएक्स फ्रेमवर्क का उपयोग कर सकता हूं तो मुझे उम्मीद है कि मैं इसे शुरू कर सकता हूं, और 100 आइटम के भीतर 100 आइटम रखे जाते हैं, तो 20 थ्रेड जो PLINQ क्वेरी का हिस्सा हैं, केवल कतार के माध्यम से प्रक्रिया करेंगे।
तीन प्रौद्योगिकियों मैं एक साथ काम करने की कोशिश कर रहा हूँ रहे हैं:
- आरएक्स फ्रेमवर्क (रिएक्टिव LINQ)
- pling
- System.Collections.Concurrent संरचनाओं
क्या आप विस्तार से आरएक्स की मदद करने के लिए कैसे उम्मीद कर सकते हैं? –
@ रिचर्ड Szalay - जैसा कि मैंने अंत के अंत में उल्लेख किया है, मेरा विचार यह है कि मुझे यह देखने के लिए मतदान नहीं करना है कि कतार में कुछ भी है या नहीं, मैं वहां प्रतिक्रिया कर सकता हूं जब वहां कुछ रखा जाता है, तो यदि बड़ी संख्या में आइटम अचानक धक्का दिया जाता है मैं प्रसंस्करण कर कई धागे हो सकता है। मैं मतदान से बचने की कोशिश कर रहा हूं, जो मैं अभी कर रहा हूं। –