PDA

Visualizza versione completa : Semafori c++


NS-1
24-09-2004, 13.08.51
Avete documentazione o altro sui semafori?
magari dei sorgenti?

ciao

Alhazred
24-09-2004, 14.13.13
Beh, di sorgenti potrei proporti solo la mia battaglia navale, ma se vuoi sapere qualcosa in particolare magari qualcosa posso provare ad aiutarti.

NS-1
24-09-2004, 14.49.16
la tua battaglia navale va benissimo, ci sono un paio di altre cose che m'interessano e che hai incluso nel tuo progetto...

per il resto, ho solo un'idea vaga di ci che fanno i semafori e non so assolutamente come farli funzionare...

:D

Alhazred
24-09-2004, 17.11.54
Originariamente inviato da NS-1
la tua battaglia navale va benissimo, ci sono un paio di altre cose che m'interessano e che hai incluso nel tuo progetto...

Se ti servono spiegazioni sul codice che ho usato chiedi pure.

per il resto, ho solo un'idea vaga di ci che fanno i semafori e non so assolutamente come farli funzionare...
:D
L'uso dei semafori non molto complicato, vengono usati quando necessario che un programma resti in attesa di un evento.
Ti faccio un esempio pratico riferito alla battaglia navale.
Siamo nel main, parte la prima istanza del programma, viene creata la memoria condivisa e poi il semaforo sem[0] con l'istruzione
sem[0] = CreateSemaphore(NULL,0,1,"semaforo1");
lo 0 indica quanti "token" sono attualmente contenuti nel semaforo in questione e l'1 a quanti pu contenerne al massimo.
Poco pi avanti c' l'istruzione
WaitForSingleObject(sem[0],INFINITE);
vuol dire che il primo processo controlla quanti "token" sono al momento disponibilil all'interno di sem[0], se ce ne sono 0 attende che ne venga rilasciato uno da qualche altro processo, nel caso in particolare il token viene rilasciato dalla seconda istanza con l'istruzione
ReleaseSemaphore(sem[0],1,&dummy);
prima di chiamare SecondoProcesso(...);
l'1 indica il numero di "token" da mettere all'interno di sem[0].
A questo punto la WaitForSingleObject chiamata dal primo processo preleva un "token" da sem[0] riportandolo a 0 e prosegue con le istruzioni fino alla prossima WaitForSingleObject.

Per altre spiegazioni o chiarimenti su ci che ho scritto qui... chiedere :p

NS-1
24-09-2004, 17.20.30
non che mi posti la battaglia navale? magari in pvt...

Alhazred
24-09-2004, 17.54.06
pvt! ;)

Dav82
24-09-2004, 17.58.46
Originariamente inviato da Alhazred
L'uso dei semafori non molto complicato...

Emb ci credo Alh, quando c' verde passi, quando c' rosso ti fermi, quando c' giallo schiacci a manetta!

Che ce vo'? :confused:


:D :D :D

NS-1
24-09-2004, 18.41.26
:D

Alhazred
26-09-2004, 10.41.12
Originariamente inviato da Dav82


Emb ci credo Alh, quando c' verde passi, quando c' rosso ti fermi, quando c' giallo schiacci a manetta!

Che ce vo'? :confused:


:D :D :D
(Y) :D