CONCORRENZA
Produttore e Consumatore 2/2

funzione produttore                      funzione consumatore
  ciclo infinito                           ciclo infinito
    elemento = produci_elemento ()           lock ()
    lock ()                                  se magazzino è vuoto
    se magazzino è pieno                       dormi ()
      dormi()                                fine
    fine                                     elemento = estrai_elemento ()
    inserisci_elemento (elemento)            unlock ()
    unlock()                                 sveglia (produttore)
    sveglia (consumatore)                  fine
  fine                                   fine
fine

Ove lock blocca la struttura. Dormi prima slocka e poi blocca il processo.

funzione lock (mutex)                    funzione unlock (mutex)
  tsl mutex                                mutex = 0
  se mutex è 0                           fine
    lancia_altro_processo
    lock ()
  fine
fine