[zxspectrum] Re: Semafori Software

  • From: "Andrea Vavassori" <andrea@xxxxxxxxxxxx>
  • To: "zxspectrum@xxxxxxxxxxxxx" <zxspectrum@xxxxxxxxxxxxx>
  • Date: Wed, 17 Mar 2004 20:42:28 +0100

On Wed, 17 Mar 2004 12:38:03 -0600, Paolo Ferraris wrote:

>Andrea Vavassori wrote:
>
>>BIT  0,(IY+$00)
>>SET  0,(IY+$00)
>>JR   Z,SEMAF
>>  
>>
>Immagino che queste istruzioni siano in un loop, vero? Oppure intendevi 
>JR NZ ?

Intendevo il "cuore" del controllo dove viene testata una condizione
che, dopo il test, viene comunque messa a "falso" perche' il test
successivo fallisca. Cosa ci sia prima o dopo, e come il programma usi
queste verifiche, non interessa al "semaforo" in se', per questo non ho
scritto altro.

>Comunque non mi pare corretto. Partiamo con il bit settato a 0. Se un 
>thread che cerca di accedere ad un semaforo viene interrotto proprio 
>dopo l'istruzione BIT, questo e` comunque garantito di prendere la 
>risorsa poiche` il flag Z e` a 0. Pero', dato che l'istruzione SET non 
>e` stata ancora eseguita, niente vieta un'altro thread di ottenere la 
>stessa risorsa.

Il tuo ragionamento presuppone che si stia lavorando sotto interrupt,
che era un concetto non ancora introdotto nel discorso (se non vado
errato...). Altrimenti, se non si e' sotto interrupt, i "thread" di cui
mi parli tu sono comunque sequenziali, quindi il controllo del primo
thread finisce sempre prima del controllo del secondo thread e la
condizione che dici tu non si verifica mai...


Ciao!

 /\
/--\ndrea

(C) 1982 Sinclair Research Ltd


Other related posts: