अभिनेता मॉडल संदेश पासिंग पर काम करता है। व्यक्तिगत प्रक्रियाओं (अभिनेताओं) को एक-दूसरे को अतुल्यकालिक संदेश भेजने की अनुमति है। इसे इस बात से अलग किया जाता है कि जिसे हम सामान्य रूप से थ्रेडिंग मॉडल के रूप में समझते हैं, वह यह है कि (कम से कम सिद्धांत में) कोई साझा स्थिति नहीं है। और अगर कोई मानता है (उचित रूप से, मुझे लगता है) कि साझा राज्य सभी बुराई की जड़ है, तो अभिनेता मॉडल बहुत आकर्षक हो जाता है।
हमें हालांकि उत्साहित नहीं होना चाहिए। अभिनेता मॉडल (कुछ आरोपों के विपरीत) गतिरोध होना असंभव बनाता है। अभिनेता मॉडल आपको विभिन्न प्रक्रियाओं - संदेश कतारों के बीच संसाधनों के लिए विवाद होने से भी नहीं रोकता है, उदाहरण के लिए। मॉडल एक निश्चित स्तर से ऊपर केवल "लॉक-फ्री" है। निचले स्तर पर, संदेश कतारों के समन्वय के लिए, लॉकिंग की आवश्यकता होती है।
क्या एक धागे को एक अभिनेता के रूप में नहीं देखा जा सकता है और अन्य धागे को संदेश भेज सकता है?
खैर, हाँ और नहीं। नहीं, यदि आप साझा स्मृति स्थानों के आसपास म्यूटेक्स लगाने के दृष्टिकोण का उपयोग कर रहे हैं। तब थ्रेड्स इस स्थिति को साझा करते हैं - वे दोनों इस स्मृति तक पहुंच रखते हैं, क्या दोनों इसे पढ़ सकते हैं, इसे फिर से लिख सकते हैं, आदि। लेकिन आप एक थ्रेडिंग मॉडल के शीर्ष पर एक अभिनेता मॉडल का निर्माण कर सकते हैं, और वास्तव में सभी अभिनेता कार्यान्वयन में थ्रेड हैं। नीचे। मैंने एक साथ ऐसा कुछ हैक किया है (बहुत बुरी तरह से) प्रत्येक थूक को एक म्यूटेक्स द्वारा संरक्षित कतार देकर - केवल मनोरंजन के लिए। अभिनेता-धागा प्रतिबाधा का प्रबंधन कैसे किया जाता है, इसका अनुमान लगाने के लिए, एक साल पहले से मेरा प्रश्न देखें ।
क्या मैं किसी भी भाषा में अलग-अलग थ्रेड्स का उपयोग करके अभिनेता मॉडल का उपयोग कर सकता हूं?
हां, लेकिन यह थोड़ा और काम करेगा। आपकी पसंदीदा भाषा अच्छी तरह से एक संदेश-पासिंग लाइब्रेरी हो सकती है, इसलिए यह जांच करने वाली पहली चीज़ होगी। इसके अलावा, आपको अपरिवर्तनीय डेटा संरचनाओं के उपयोग की जांच करनी चाहिए। ध्यान दें कि यदि कोई डेटा संरचना अपरिवर्तनीय है, तो आपने अनिवार्य रूप से "साझा-स्थिति" समस्या से निपटा है - कई थ्रेड्स बिना किसी खराब होने के अपरिवर्तनीय डेटा के संदर्भ रख सकते हैं। एक कारण है कि अभिनेता भाषाएं भी कार्यात्मक भाषा (एरलंग, स्काला) होती हैं।
आप सॉफ्टवेयर ट्रांजैक्शनल मेमोरी पर भी नज़र डाल सकते हैं, जो एक अलग लेकिन सम्मोहक मॉडल है। क्लोजर मेरा पसंदीदा उदाहरण है।