ऑब्जेक्ट्स (सी ++) की एक (दोगुनी) लिंक की गई सूची को देखते हुए, मेरे पास एक ऑपरेशन है जिसे मैं प्रत्येक ऑब्जेक्ट पर प्रदर्शन करने के लिए बहुप्रचार पसंद करूंगा। ऑपरेशन की लागत प्रत्येक वस्तु के लिए समान नहीं है। लिंक्ड सूची विभिन्न कारणों से वस्तुओं के इस सेट के लिए पसंदीदा भंडारण है। प्रत्येक ऑब्जेक्ट में पहला तत्व अगली ऑब्जेक्ट पर पॉइंटर है; दूसरा तत्व सूची में पिछली वस्तु है।मल्टीथ्रेडेड लिंक्ड सूची ट्रैवर्सल
मैंने नोड्स की एक सरणी बनाकर और ओपनएमपी लागू करके समस्या हल कर दी है। यह सभ्य प्रदर्शन दिया। फिर मैंने अपनी खुद की थ्रेडिंग रूटीन (विंडोज प्राइमेटिव्स के आधार पर) पर स्विच किया और इंटरलाक्डइनक्रिएशन() (सरणी में इंडेक्स पर अभिनय) का उपयोग करके, मैं उच्च समग्र सीपीयू उपयोग और तेजी से रख-रखाव प्राप्त कर सकता हूं। अनिवार्य रूप से, धागे तत्वों के साथ "छलांग-मेंढक" द्वारा काम करते हैं।
अनुकूलन के लिए मेरा अगला दृष्टिकोण मेरी लिंक्ड सूची में तत्वों की सरणी बनाने/पुन: उपयोग करने को समाप्त करने का प्रयास करना है। हालांकि, मैं इस "लीप-मेंढक" दृष्टिकोण को जारी रखना चाहता हूं और किसी भी तरह से कुछ अनौपचारिक दिनचर्या का उपयोग करना चाहता हूं जिसे "इंटरलाक्ड कॉम्परेयर डिफरेंस" कहा जा सकता है - परमाणु रूप से एनयूएलएल (सूची के अंत) के खिलाफ तुलना करने के लिए और सशर्त रूप से dereference & स्टोर, dereferenced मूल्य को वापस लौटना ।
मुझे नहीं लगता कि InterlockedCompareExchangePointer() काम करेगा क्योंकि मैं परमाणु रूप से पॉइंटर को कम नहीं कर सकता और इस इंटरलाक्ड() विधि को कॉल कर सकता हूं। मैंने कुछ पढ़ा है और अन्य महत्वपूर्ण वर्ग या स्पिन-लॉक का सुझाव दे रहे हैं। गंभीर वर्ग यहां भारी वजन लगते हैं। मैं स्पिन-लॉक को आजमाने की कोशिश कर रहा हूं लेकिन मैंने सोचा कि मैं पहले यहां सवाल उठाऊंगा और पूछूंगा कि अन्य लोग क्या कर रहे हैं। मुझे विश्वास नहीं है कि InterlockedCompareExchangePointer() विधि स्वयं स्पिन-लॉक की तरह उपयोग की जा सकती है। फिर किसी को भी अधिग्रहण/रिलीज/बाड़ अर्थशास्त्र पर विचार करना होगा ...
विचार? धन्यवाद!
यह धागे की थोड़ी मात्रा के लिए अच्छी तरह से काम करेगा, लेकिन यदि आप उदाहरण के लिए 1000 धागे पर विचार करते हैं, तो आप "skipjumping" 1000 प्रविष्टियों महंगा होने के बाद स्मृति बाधाओं के _lot_ के साथ समाप्त हो जाएंगे (10000 सूची आइटम थोड़ा कम देंगे 10 एम मेमोरी बाधाओं की तुलना में) –
मैं सूची को संशोधित नहीं कर रहा हूं, सिर्फ सूची में कई धागे सूची को पार करना चाहते हैं। –