scala - अभिनेता के बाहर अक्का अभिनेता के साथ बातचीत करें




asynchronous akka (2)

मैं अपने धागे से अक्का अभिनेताओं के साथ बातचीत करना चाहता हूं। वर्तमान में, मैं ऐसा करता हूं:

val res = Await.result(aref ? GroupReceive(fromRank), timeout.duration).asInstanceOf[T]

लेकिन मुझे यह अनिश्चित है कि यह कैसे वास्तव में मेरे धागे से संपर्क करता है? मैं प्राप्त करने के लिए एसिंक्रोनस होने की इच्छा करता हूं, यानी मैं किसी दूसरे काम को करने की अनुमति प्राप्त करते समय धागा को लटका देना चाहता हूं। मैंने हाल ही में अकाका इनबॉक्स सिस्टम के बारे में पढ़ा है इनबॉक्स अकाखा एपीआई

मुझे लगता है मुझे याद है कि प्रतीक्षा हर बार एक नए अभिनेता बनाता है इंतजार के बीच मतभेद क्या हैं + पूछें और इनबॉक्स में, और क्या कोई मुझे एक इनबॉक्स कैसे बना सकता है और "बाहर" से कलाकारों के साथ संवाद करने के लिए इसका इस्तेमाल कर सकता है?

संपादित करें बस स्पष्ट करने के लिए, मैं एक ही धागा काम करना जारी रखने के लिए नहीं चाहता, मैं चाहता हूं कि इसे सीपीयू-कोर को रोकना बंद कर देना और अन्य धागे को काम करने तक छोड़ देना चाहिए, जब तक कि कुछ प्राप्त न हो जाए, फिर से जाग जाएं।


जैसा कि अक्का के फ्यूचर दस्तावेज में लिखा गया है, परिणाम का इंतजार करने के लिए इंतजार करते हुए प्रतीक्षा थैंक को मौजूदा धागा ब्लॉक करता है।

उदाहरण

import scala.concurrent.Await
import akka.pattern.ask
import akka.util.Timeout
import scala.concurrent.duration._

implicit val timeout = Timeout(5 seconds)
val future = actor ? msg // enabled by the “ask” import
val result = Await.result(future, timeout.duration).asInstanceOf[String]

इससे वर्तमान धागा को ब्लॉक करने और अभिनेता को इसके उत्तर के साथ भविष्य को 'पूरा' करने के लिए इंतजार करना होगा

अभिनेता के साथ प्रयोग करें


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

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







inbox