परिदृश्य: डाटा प्राप्त टाइमस्टैम्प के साथ डेटाबेस के लिए लिखा है। मुझे कच्चे डेटा को टाइम स्टैंप के आधार पर प्राप्त क्रम में संसाधित करने की आवश्यकता है और इसे वापस डेटाबेस, अलग-अलग तालिका में लिखना है, फिर टाइमस्टैम्प के आधार पर ऑर्डर को बनाए रखना है।क्या कतार के प्रकार के समानांतर डाटा प्रोसेसिंग में उपयोग करने के लिए - सी # - नेट 4
मैं निम्नलिखित डिजाइन के साथ आया था: संसाधित डेटा भंडारण से पहले इसे वापस डीबी के लिए लिखा है के लिए दो कतारों, डेटाबेस से कच्चे डेटा के भंडारण के लिए एक, एक और बनाया गया। मेरे पास दो धागे हैं, एक प्रारंभिक कतार में पढ़ रहा है और परिणाम कतार से एक और पढ़ रहा है। बीच में मैं प्रारंभिक कतार से डेटा को संसाधित करने के लिए एकाधिक धागे उत्पन्न करता हूं और इसे परिणाम कतार में लिखता हूं।
मैं SortedList (मैनुअल ताला) और BlockingCollection साथ प्रयोग किया है। मैंने समांतर में प्रक्रिया के लिए दो दृष्टिकोणों का उपयोग किया है: समांतर। के लिए (ForEach) और TaskFactory.Task.StartNew।
डेटा की प्रत्येक इकाई कई कारकों के आधार पर प्रक्रिया के लिए परिवर्तनीय मात्रा ले सकती है। एक धागा अभी भी पहले डेटा बिंदु को संसाधित कर सकता है जबकि अन्य धागे प्रत्येक तीन या चार डेटापॉइंट्स के साथ किए जाते हैं, टाइमस्टैम्प ऑर्डर को गड़बड़ कर देते हैं।
मुझे हाल ही में ऑर्डरिंग पार्टिशनर के बारे में पता चला है और मैंने सोचा कि यह समस्या का समाधान करेगा, लेकिन एमएसडीएन उदाहरण के बाद मैं देख सकता हूं कि यह अंतर्निहित संग्रह को सॉर्ट नहीं कर रहा है। जटिल डेटा प्रकारों के संग्रह को ऑर्डर करने के लिए मुझे कस्टम विभाजनकर्ता को लागू करने की आवश्यकता हो सकती है? या समस्या का सामना करने का एक बेहतर तरीका हो सकता है?
इसी तरह की समस्या पर चर्चा करने वाले लेखों के किसी भी सुझाव और/या लिंक की अत्यधिक सराहना की जाती है।
क्या आप शायद कुछ कोड जोड़ सकते हैं? – flesh