7.5.4.1 Esempio Semaphore

I semafori sono spesso usati per gestire risorse con capacità limitate, ad esempio, un database server. In ogni situazione dove la dimensione della risorsa è fissata, si dovrebbe usare un semaforo limitato. Prima di generare ogni thread, il thread principale inizializzerebbe il semaforo:

maxconnections = 5
...
pool_sema = BoundedSemaphore(value=maxconnections)

Una volta generati, i thread chiamano i metodi acquire e release del semaforo quando devono connettersi al server:

pool_sema.acquire()
conn = connectdb()
... use connection ...
conn.close()
pool_sema.release()

L'uso di un semaforo limitato riduce la possibilità che un errore di programmazione provocato dal maggior numero di rilasci del semaforo rispetto a quello delle sue acquisizioni non venga rilevato.

Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.