एक और तुल्यकालन सवाल ... मुझे आशा है कि आप लोग परेशान हो जाते नहीं है;)एकाधिक पाठकों के लिए सिंक्रनाइज़ेशन, एकल लेखक?
इस परिदृश्य की कल्पना: एक केंद्रीय डेटा संरचना (बहुत बड़ी है, इसलिए मैं नहीं है वास्तव में इसे बनाने के लिए अपरिवर्तनीय और चाहते हैं कि उसे कॉपी जब भी कोई परिवर्तन होता है। मैं भी कई प्रतियों को स्मृति में रखना नहीं चाहता), एकाधिक पाठक धागे जो उस डेटा संरचना को केवल पढ़ने के लिए और एक लेखक थ्रेड तक पहुंचते हैं जो पृष्ठभूमि में डेटा संरचना को अद्यतित रखता है।
मैं वर्तमान में डेटा संरचना में सभी पहुंच सिंक्रनाइज़ करता हूं, जो ठीक काम करता है (कोई सिंक्रनाइज़ेशन प्रभाव नहीं, कोई डेडलॉक्स नहीं)। मुझे इस दृष्टिकोण के बारे में क्या पसंद नहीं है यह है कि ज्यादातर समय मेरे पास बहुत सारे पाठक धागे सक्रिय होते हैं और लेखक थ्रेड केवल हर समय सक्रिय होते हैं। अब पाठक धागे के लिए यह पूरी तरह से अनावश्यक है कि अन्य पाठक धागे खत्म होने की प्रतीक्षा करें। जब तक लेखक थ्रेड वर्तमान में लिख नहीं रहा है, तब तक वे समानांतर में डेटा संरचना तक आसानी से पहुंच सकते हैं।
क्या इस तरह के परिदृश्य को हल करने के लिए एक अच्छा और सुरुचिपूर्ण तरीका है?
संपादित करें: उत्तर और लिंक के लिए बहुत बहुत धन्यवाद! मुझे बस एक और छोटा और संबंधित प्रश्न जोड़ने दो: यदि पाठक के महत्वपूर्ण वर्गों में निष्पादित कोड केवल बहुत ही कम समय लेता है (जैसे कि हैश टेबल लुकअप), तो क्या आप वर्णन की जाने वाली तकनीकों में से एक को लागू करने पर विचार करने के लायक हैं या क्रमबद्धता है ताले के प्रभाव इस मामले में इतना बुरा नहीं है? स्केलेबिलिटी और प्रदर्शन बहुत महत्वपूर्ण हैं। तुम क्या सोचते हो?
संपादित करें 2: मैं सिर्फ एक लेखक/एकाधिक पाठकों में से एक कार्यान्वयन में देखा - ताला और इस कार्यान्वयन एक मॉनिटर का उपयोग करता WaitToRead विधि में कुछ कोड सिंक्रनाइज़ करने के लिए। क्या यह वही धारावाहिक प्रभाव नहीं है जिसे मैं पहली जगह से बचना चाहता था? (फिर भी यह मानते हुए कि कोड सिंक्रनाइज़ किया जाना छोटा और तेज़ है)
सावधान रहें कि कुछ डेल्फी संस्करणों में वह वर्ग मोटे तौर पर टूटा हुआ है। यह डेल्फी 2005 के रूप में तय किया गया है, शायद पहले। –