Un altro costrutto di alto livello è l'uso delle regioni critiche condizionali: region V when B do S. Questo costrutto valuta in mutua esclusione l'espressione booleana B e nel caso in cui sia vera esegue S. I vantaggi di questo costrutto sono l'uso di una sola variabile al posto di ogni coppia di semafori e una maggiore chiarezza nella scrittura del costrutto. I contro sono per lo più riconducibili a una minore efficienza.
L'esempio del produttore/consumatore risulta quindi essere:
Produttore:
region b count
when b < MAX do {
region b.p do{
buffer[b.p] = n
b.p = (b.p+1)%MAX
}
b.count++
}
Consumatore
region b.count
when b.count >0 do{
region b.c do{
n=buffer[b.c]
b.c = (b.c+1)%MAX
}
b.count--
}
Un costrutto simile al precedente è region V do S1 await B do S2 in cui viene eseguito S1 prima di testare B ed eventualmente eseguire S2.
Per le immagini Ringraziamo ©giorgiafin
| < Prec. | Succ. > |
|---|





