Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [c++] Threads - Semafori

    Parlando di threads...
    che cosa si intende per semafori? mi potreste mostrare un esempio del loro funzionamento?

    grazie
    ...e quando meno te lo aspetti potrebbe capitare qualcosa di bello, di più importante di quello che avevi programmato...

  2. #2
    adesso non ho tempo per un esempio.
    comunque un semaforo e' un flag che gestisce l'accesso a delle
    risorse del sistema(in un caso semplice con soli 2 threads
    con la risorsa che ne accetta solo uno per volta)
    in altri casi(dove la risorsa puo avere piu' di un threads alla volta)
    si parla di semaforo generalizzato che e' una variabile che puo'
    raggiungere un valore massimo.

    finche il valore e' al di sotto del massimo un threads puo'
    accedere a quella risorsa.

    nel caso semplice
    un esempio:
    abbiamo due processi A e B che vogliono accedere a C

    C e' una locazione di memoria dove si
    vuole che un processo(A) salvi un dato e un altro(B)
    legga il dato per rielaborarlo.
    capisci bene che C accetta solo uno alla volta e che se devono
    essere sincronizzati A e B devono avere un flag altrimenti A
    rischia di scrivere due(o piu') volte il dato prima che B legga

    oppure B rischia di Leggere 2(o piu') volte il dato.

    quindi Presupponendo che parta A(visto la logica)
    il flag sara' =0

    A dovra'
    se il flag e' a 0
    scrivere su C
    cambiare il flag e metterlo a 1
    altrimenti continua a controllare il flag finche'
    sara' uguale a 0

    B dovra'
    se il flag e a 1
    leggere da C
    cambiare il flag e metterlo a 0
    altrimenti continua.

    A si chiama Produttore
    B si chiama consumatore
    il flag e' detto semaforo.

  3. #3
    Ti ringrazio sei stato chiarissimo!
    ...e quando meno te lo aspetti potrebbe capitare qualcosa di bello, di più importante di quello che avevi programmato...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.