Path: news.net.uni-c.dk!not-for-mail From: Karl Kristian Krukow Newsgroups: daimi.beta Subject: Re: Ref is NONE? Date: Sun, 28 Apr 2002 15:04:36 +0200 Organization: UNI-C Lines: 78 Message-ID: <3CCBF364.CD0AB075@cs.au.dk> References: <3CCABDFB.FA3AD3A4@cs.au.dk> NNTP-Posting-Host: horse01.cs.au.dk Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Trace: news.net.uni-c.dk 1019999078 6712 130.225.18.241 (28 Apr 2002 13:04:38 GMT) X-Complaints-To: usenet@news.net.uni-c.dk NNTP-Posting-Date: Sun, 28 Apr 2002 13:04:38 +0000 (UTC) X-Mailer: Mozilla 4.76 [en] (X11; U; Linux 2.4.9-12smp i686) X-Accept-Language: en Xref: news.net.uni-c.dk daimi.beta:10569 Morten Grouleff wrote: > Karl Kristian Krukow writes: > > > Jeg skal bruge Beta i et projekt, og det er længe siden jeg sidst har > > set en (#... #). > > > > Mit problem er en NONE-ref, der opstår, som jeg ikke kan forklare: > > > > jeg bruger > > > > RedVis: Visitor > > (# > > sys:@SystemEnv; > > sem:@sys.Semaphore; > > visitRes::< > > (# new: ^Res; Q: ^Process; > > do (* Res Res *) > > sem.P; > > (* DO SOME Critical stuff *) > > sem.V; > > #); > > ... > > #) > > > > Er dette ikke den rigtige måde at bruge semaforen på? > > Dette giver en 0-pointer, idet der laves sem.P - det er i hvert fald > > hvad jeg får ud af debuggeren. > > > > Hvad er der galt? > > Det er ikke helt klart ud fra kodestumpen, men jeg vil tro det har at > gøre ned "SystemEnv". Der skal være netop *en* instans af "SystemEnv" i > en kørsel, og den skal være den "aktive" del af programmet. Det kunne se > ud som om du har flere instanser i dit program? > > Mvh. > -- > Morten Grouleff, M.Sc. C.S., Software Developer, Mjølner Informatics A/S. > Phone: +45 70274343 Direct: +45 89425815 Fax: +45 70274344 Jep. Jeg er usikker på hvordan jeg skal bruge det. 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; #); men så skal jeg have en systemenv, for at kunne bruge conc. Derfor havde jeg bare en sys:@systemenv , så kunne jeg sige sys.conc(# ... #). Men det er helt galt. Og jeg får null pointers og sådan. Det jeg gerne vil vide er hvordan jeg skiver et fragment som ovenstående der kan bruge semaforer og eksekvere kode concurrently. Forstår du hvad jeg prøver at formulere? Jeg har som sagt ikke skrevet (# .. #) i meget lang tid og er lidt bange for at jeg griber det forkert an . mvh. Karl