2012-04-10 14 views
6

टीवीर कैसे काम करता है? जो मैंने पढ़ा है, वह उन्हें प्राप्त करने के तुरंत बाद सभी लेनदेन चलाने का प्रयास करता है, हालांकि, एक लेनदेन पूरा करने वाले अन्य वर्तमान में चल रहे लेनदेन को अमान्य कर देता है, जिसे फिर पुनरारंभ करना होगा। क्या यह टीवीर काम करता है?हास्केल: टीवीर कैसे काम करता है?

यदि ऐसा होता है, तो लेनदेन 1 एमएमएस लंबे लेनदेन प्रत्येक 100 एमएमएस होने पर लेनदेन कर रहे थे, तो इसका मतलब यह होगा कि एक लेनदेन जो 200 एमएमएस प्रक्रिया में पूरा नहीं होगा?

उत्तर

8

जब तक दो लेन-देन अलग-अलग TVars तक पहुंचते हैं, तो वे दोनों एक-दूसरे को अमान्य किए बिना एक साथ किए जा सकते हैं।

बस यह स्पष्ट जब एक सौदा अवैध है बनाने के लिए, चलो इस परिदृश्य पर विचार करें:

  1. मान लीजिए कि t :: TVar Int0 को आरंभ नहीं हो जाता और लेन-देन A की शुरुआत में readTVar t के माध्यम से पढ़ा जाता है।
  2. इस बीच, एक और धागे में, लेनदेन B शुरू किया गया है जिसमें writeTVar t 1 निष्पादित किया गया है। मान लें कि BA से पहले कार्य करता है। एसटीएम प्रणाली जांच करेगी कि क्या कोई असंगतता है और यह निष्कर्ष निकाला है कि इस बिंदु पर प्रतिबद्ध होने के लिए B के लिए यह सुरक्षित है, इसलिए अब writeTVar t 1 प्रभावी हो गया है।
  3. हालांकि, AA की शुरुआत में के पुराने मूल्य 0 के बाद से लेनदेन A को अमान्य होने का कारण बनता है। (यदि A प्रतिबद्ध करने के लिए अनुमति दी गई थी, हम atomicity का उल्लंघन मिलेगा।)

मूल पत्र [1] हास्केल के एसटीएम सिस्टम पर (धारा 6.5 देखें) आपके प्रश्न के उत्तर:

"भुखमरी संभव है। उदाहरण के लिए, एक लेनदेन जो के लिए चलता है, बहुत लंबे समय से छोटे लेनदेन के साथ बार-बार संघर्ष कर सकता है। हमें लगता है कि भुखमरी अभ्यास में होने की संभावना नहीं है, लेकिन हम बिना किसी अनुभव के बता सकते हैं। "

[1] टिम हैरिस, साइमन मार्लो, साइमन पेटन जोन्स और मॉरीस हेर्लिही। समांतर प्रोग्रामिंग 2005 (पीपीओपीपी'05) के सिद्धांतों और अभ्यास पर एसीएम सम्मेलन।

+0

[विभिन्न एसटीएम पेपर और प्रस्तुतियों के लिए लिंक, जिसमें एक उल्लेख किया गया है] (http://research.microsoft.com/en-us/um/people/simonpj/papers/stm/index.htm)। – hammar

5

यदि लेनदेन 1 एमएमएस लंबे लेनदेन प्रत्येक 100 एमएमएस के होते हैं, तो इसका मतलब यह होगा कि एक लेनदेन जो प्रक्रिया में 200 एमएमएस लेता है कभी पूरा नहीं होगा?

गतिविधियाँ केवल संघर्ष अगर वे स्पर्श ही TVar रों है, इसलिए यदि 1ms लेनदेन के कुछ सभी चर 200 मि.से लेनदेन से प्रभावित बचा है, तो 200 मि.से एक को पूरा करने में सक्षम होगा। इसके अलावा, STM मोनैड के अंदर क्या अनुमति है (केवल मेमोरी एक्सेस और शुद्ध कंप्यूटेशंस के बारे में काफी सख्त है!) लेनदेन की लंबाई के बीच ऐसी असमानता बहुत असामान्य है; आम तौर पर, वे केवल कुछ ही मेमोरी पढ़ेंगे/लिखेंगे, और सभी IO और अन्य गणना लेनदेन के बाहर की जाएगी।इसके अलावा, क्या किसी अन्य लेनदेन द्वारा हमेशा के लिए एक विशेष लेनदेन हमेशा अवरुद्ध किया जाता है, एक शेड्यूलिंग समस्या का थोड़ा सा है; मुझे 100% यकीन नहीं है कि जीएचसी का वर्तमान शेड्यूलर कैसा दिखता है, लेकिन ऐसा लगता है कि यह पुराने (या उच्च विफलता दर) लेनदेन को वरीयता देता है।

उस ने कहा, livelock STM के साथ एक बहुत ही वास्तविक समस्या है, और अधिक पारंपरिक लॉकिंग समवर्ती कार्यान्वयन में डेडलॉक के रूप में खतरनाक और मुश्किल के बारे में है।

टीवीर कैसे काम करता है?

आप शायद this paper का आनंद लेंगे।

संबंधित मुद्दे