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.