Scala actor to non-actor interaction (or synchronizing messages from an actor to a servlet) -
मैं निम्नलिखित स्केला कोड है:
पैकेज डमी आयात javax.servlet.http। {HttpServlet, HttpServletRequest = & gt; एचएसआरक, एचटीटीपीएसर्वेटरेस्पॉन्स = & gt; HSResp} आयात scala.actors.Actor वर्ग DummyServlet फैली HttpServlet {RNG.start ओवरराइड doGet डीईएफ़ (अनुरोध: HSReq, resp: HSResp) = {def संदेश = & LT; HTML और gt; & lt; HEAD & gt; & lt; title & gt; RandomNumber & lt; / title & gt ; & lt; / head & gt; & lt; body & gt; यादृच्छिक संख्या = {getRandom} & lt; / body & gt; & lt; / HTML & gt; resp.getWriter () प्रिंट (संदेश) डीईएफ़ getRandom:। स्ट्रिंग = {var d = नए DummyActor; d.start; d.getRandom}} वर्ग DummyActor फैली अभिनेता {var परिणाम = "0" डीईएफ़ में कार्य = {RNG! GetRandom प्रतिक्रिया दें {case (r: int) = & gt; परिणाम = r.toString}} डीईएफ़ getRandom: स्ट्रिंग = {Thread.Sleep (300) परिणाम}}} // नीचे कोड परिवर्तनीय नहीं है। मैं एक पुस्तकालय मामले वस्तु GetRandom वस्तु RNG के रूप में यह उपयोग कर रहा हूँ अभिनेता {def में कार्य {{पाश प्रतिक्रिया {मामले GetRandom = & gt; इस scala.util.Random.nextInt}}}} फैली
उपरोक्त कोड में, मैं यह सुनिश्चित करने के लिए परिणाम
के लिए पर्याप्त समय अद्यतन, अन्यथा 0 <कोड> Thread.Sleep है लौटा हुआ।
thread.sleep
का उपयोग किए बिना ऐसा करने का एक और शानदार तरीका क्या है? मुझे लगता है कि मुझे वायदा का उपयोग करना होगा, लेकिन मुझे अवधारणा के आसपास अपना सिर नहीं मिल सकता है मुझे यह सुनिश्चित करने की ज़रूरत है कि प्रत्येक एचटीटीपी पुनर्निवेश को एक अनोखी यादृच्छिक संख्या मिलती है (ज़ाहिर है, यादृच्छिक संख्या सिर्फ समस्या को समझाने के लिए है)। कुछ संकेत या संदर्भ की सराहना की जाएगी।
या तो उपयोग करें:
!! & Lt; - एक भविष्य देता है कि आप
या
के लिए प्रतीक्षा कर सकते हैं !? & Lt; - एक समय समाप्त के साथ एक का उपयोग करें, पूरी तरह तुल्यकालिक खतरनाक है
आरएनजी की आपकी परिभाषा को देखते हुए, यह सत्यापित करने के लिए कुछ आरईपीएल कोड है:
scala & gt; Def foo = {println (आरएनजी।!? (1000, GetRandom))} फू: यूनिट स्काले & gt; फू कुछ (-1025916420) स्केल & gt; फू कुछ (-168 9 041124) स्केल & gt; Foo कुछ (-1633665186)
डॉक्स यहां हैं:
Comments
Post a Comment