Path: news.net.uni-c.dk!Morten.Grouleff.Mjolner.Informatics From: Morten Grouleff Newsgroups: daimi.beta Subject: Re: Ref is NONE? Date: 28 Apr 2002 16:02:42 +0200 Organization: Mjolner Informatics. Lines: 64 Sender: mg@midgaard Message-ID: References: <3CCABDFB.FA3AD3A4@cs.au.dk> <3CCBF364.CD0AB075@cs.au.dk> NNTP-Posting-Host: bifrost.mjolner.dk Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Trace: news.net.uni-c.dk 1020002564 17870 130.225.4.254 (28 Apr 2002 14:02:44 GMT) X-Complaints-To: usenet@news.net.uni-c.dk NNTP-Posting-Date: Sun, 28 Apr 2002 14:02:44 +0000 (UTC) User-Agent: Gnus/5.0803 (Gnus v5.8.3) Emacs/20.5 Xref: news.net.uni-c.dk daimi.beta:10571 Karl Kristian Krukow writes: [...] Indledningsvis vil jeg sige at der er en del inspiration at hente i demoerne i $BETALIB/demo/basiclib/systemenv/*.bet og i manualen for SystemEnv, der er afsnit 9 i Eksemplerne er korte og manual-delen er faktisk også ret kort. > Jeg skal bruge semaphore pattern'et og conc pattern, som ligger inde i > systemenv. > > Jeg vil gerne skrive et pattern i et fragment, der skal eksekvere noget kode > parallelt. > dvs. > > RedVis: Visitor(# > visitPar::< (# > do > her skal jeg eksekvere to objekter > concurrently > #); > . > . > . > #); > Til dette vil jeg så bruge betas conc(# do this(RedVis)[]->p.P.visitFrom; > > this(RedVis)[]->p.Q.visitFrom; #); Conc udfører "systemer" simuleret parallelt, ikke almindelige beta udtryk. Du er nødt til at pakke dine udtryk ind som systemer: Sys1: System(# do this(RedVis)[]->p.P.visitFrom #); Sys2: System(# do this(RedVis)[]->p.Q.visitFrom #); conc(# do &|Sys1[]->start; &|Sys2[]->start #); > men så skal jeg have en systemenv, for at kunne bruge conc. Ja. der skal være et SystemEnv, da det indeholder skeduleringen: ORIGIN '~beta/basiclib/systemenv'; ---program: descriptor-- SystemEnv (# Sys1: System(# do this(RedVis)[]->p.P.visitFrom #); Sys2: System(# do this(RedVis)[]->p.Q.visitFrom #); do conc(# do &|Sys1[]->start; &|Sys2[]->start #); #) Når du deler det op i flere fragmenter/filer, så husk at kun program:descriptor skal have ORIGIN i systemenv. De øvrige skal have ORIGIN i basicsystemenv. Forskellen på de to er at basicsystemenv definerer interfacet of systemenv vælger den rigtige implementation til et program uden Guienv grænseflade. Mvh. -- Morten Grouleff, M.Sc. C.S., Software Developer, Mjølner Informatics A/S. Phone: +45 70274343 Direct: +45 89425815 Fax: +45 70274344