2011-03-30 5 views
8

से शुरू करना मैं टॉपशेल्फ़ कोड देख रहा हूं, और ध्यान दें कि यह 'stact.dll' नामक एक असेंबली का उपयोग कर रहा है। इस पर चारों ओर बहुत सारी जानकारी प्रतीत नहीं होती है। यह अभिनेताओं और 'चैनलों' का उपयोग कर समवर्ती अनुप्रयोगों के निर्माण के लिए एक पुस्तकालय प्रतीत होता है। मुझे टॉपशेल्फ़ कोड का पालन करने में थोड़ा मुश्किल लगता है, लेकिन मुझे प्रोग्रामिंग की इस शैली के बारे में और जानने में दिलचस्पी है। क्या किसी को इस पुस्तकालय के साथ कोई अनुभव है? आप इसका उपयोग कैसे करें सीखने के बारे में कैसे गए?स्टैक्ट फ्रेमवर्क

+1

अभिनेता बनाम इस वर्णन का विवरण। एरलांग/स्कैला में धागा मॉडलिंग अवधारणा से संबंधित है। शायद यह कुछ पृष्ठभूमि देने में मदद करता है। http://ruben.savanne.be/articles/concurrency-in-erlang-scala और ये खुद क्रिस द्वारा एकत्रित संदर्भ हैं http://blog.phatboyg.com/2011/11/26/references-on-the-actor -प्रोग्रामिंग-मॉडल/ – enix

उत्तर

6

स्टैक्ट वर्तमान में इस समय वास्तव में आंतरिक रूप से उपयोग किया जाता है। यह कुछ ऐसा है जो हमने अपने अनुभवों से समवर्ती सॉफ्टवेयर लिखने और क्रिस पैटरसन (https://github.com/phatboyg/Stact) के काम से बनाया है।

सबसे सरल उदाहरण मैं सोच सकता हूं कि कैशबॉक्स से बाहर है। https://github.com/Cashbox/Cashbox/blob/v1.0/src/Cashbox/Engines/FileStorageEngine.cs

आपके पास एक चैनल है जो संदेश भेजता है। उस चैनल के एक छोर पर आप संदेश सदस्यता सेट अप करते हैं। लाइन 72 सब्सक्रिप्शन बनाता है, प्रत्येक संदेश प्रकार के लिए एक हैंडलर एक्शन सेट करता है। हैंडलऑन फाइबर (_ फाइबर) सभी संदेशों को एक ही धागे पर संसाधित करने के लिए मजबूर कर रहा है और वे प्राप्त होने के बाद कतारबद्ध हैं। अन्य हैंडल कॉल हैं और उम्मीद है कि एपीआई बल्कि खोजने योग्य है।

अब यह उदाहरण एक वर्ग में सभी चैनलों और फाइबर को छुपाता है, तो आपके पास अलग-अलग वर्गों को जोड़ने वाले चैनल हो सकते हैं, इस मामले में चैनल के संदर्भ में संदर्भ के संदर्भ में पास होना होगा।

वास्तव में एक अभिनेता पुस्तकालय है। इस समय, अभिनेताओं को लिखने के लिए इसका उपयोग करने के लिए कोई महान उदाहरण नहीं हैं। आशा है कि ये आपकी मदद करेगा।

+0

धन्यवाद ट्रैविस। मैं कैशबॉक्स उदाहरण देखता हूं और कोशिश करता हूं और इसके चारों ओर अपना सिर लेता हूं। –

+1

शायद रेटलैंग का भी उल्लेख करना चाह सकता है: http://code.google.com/p/retlang/ –

+1

उदाहरण लिंक मृत है –