अगर मुझे समझ में आया, अभिनेता मॉडल ऑब्जेक्ट मॉडल की तरह है, लेकिन कुछ अंतरों के साथ:
- हर एक वस्तु के अलग-अलग धागे होते हैं और जब आपके पास हजारों ऑब्जेक्ट होते हैं तब भी यह समस्या नहीं होती है।
- अभिनेता कॉल फ़ंक्शन और रिटर्न वैल्यू प्राप्त करने के बजाय बातचीत नहीं करते हैं, बल्कि संदेश भेजने और प्राप्त करने के द्वारा।
- यदि आप उस मॉडल का उल्लंघन नहीं करते हैं, तो आपका ऐप रेस की स्थिति के किसी भी जोखिम के बिना अपनी पूर्ण शक्ति के लिए संगामिति का उपयोग करेगा।
- सब कुछ आप ओओ में कर सकते हैं आप अभिनेताओं का उपयोग कर सकते हैं लेकिन बेहतर है, समस्या यह है कि पिछले वर्षों में हमने जो कुछ कोडित किया था वह ओओ आधारित था - लेकिन एक संक्रमण आसन्न है।
इसलिए, उदाहरण के लिए, मुझे लगता है कि मुझे 3 डी वेक्टर वर्ग / अभिनेता को परिभाषित करना है, दो उदाहरण बनाएं और उन पर एक राशि संचालन कॉल करें।
वस्तु के उन्मुख:
class V3d {
constructor V3d(x,y,z) //bla
float x,y,z;
function sum(V3d b)
{
return V3d(x+b.x,y+b.y,z+b.z);
}
}
//using:
mySum = V3d(1,2,3).sum(V3d(3,2,1)) //creates 2 instances, sum, returns instantly
drawPoint(mySum) //uses the result
संकेतक मॉडल:
actor V3d
{
constructor V3d(x,y,z) //bla
float x,y,z;
loop
{
receive 'sum',b:V3d :
send(caller,'sumResult',V3d(x+b.x,y+b.y,z+b.z))
}
}
//using:
send(V3d(1,2,3),'sum',V3d(3,2,1)) //creates 2 instances, send to the first one a request to sum with the second one
loop
{
receive 'sumResult',result:
drawPoint(result) //receives result and draws it
}
क्या यही है? या मैं पूरी तरह से गलत हूं?