7.5.1 Oggetti Lock

Un lock primitivo è una primitiva di sincronizzazione che non è posseduta da nessun particolare thread quando è bloccata. In Python, al momento è la primitiva di sincronizzazione di più basso livello disponibile, implementata direttamente dal modulo di estensione thread.

Un lock primitivo si trova in uno dei due stati, ``bloccato'' o ``sbloccato''. Viene creato nello stato sbloccato. Possiede due metodi di base, acquire() e release(). Quando lo stato è sbloccato. acquire() modifica lo stato a bloccato, e restituisce immediatamente. Quando lo stato è bloccato, acquire() si blocca fino che la chiamata release() in un altro thread lo modifichi a sbloccato, quindi la chiamata a acquire() lo reimposta in modo bloccato e restituisce. Il metodo release() dovrebbe essere chiamato solo nello stato bloccato; modifica lo stato in sbloccato e restituisce immediatamente. Quando più di un thread è bloccato in acquire(), in attesa che lo stato venga cambiato in sbloccato, solo un thread procede quando una chiamata a release() reimposta lo stato a sbloccato; quale dei thread in attesa procederà in seguito non è definito, e può variare a seconda dell'implementazione.

Tutti i metodi sono eseguiti atomicamente.

acquire( [blocking = 1])
Acquisisce un lock, bloccante o non bloccante.

Quando viene invocato senza argomenti, si blocca fino a che il lock è sbloccato, quindi lo blocca e restituisce. Non c'è alcun valore restituito in questo caso.

Quando viene invocato con l'argomento blocking impostato a vero, esegue le stesse cose di quando viene chiamato senza argomenti, e restituisce vero.

Quando viene invocato con l'argomento blocking impostato a falso, non si blocca. Se una chiamata senza un argomento si bloccherebbe, restituisce falso immediatamente; altrimenti, esegue le stesse azioni di quando viene chiamato senza argomenti, e restituisce vero.

release( )
Rilascia un lock.

Quando un lock è bloccato, lo reimposta come sbloccato, e restituisce. Se qualunque altro thread è bloccato in attesa che il lock si sblocchi, permette solo a uno di loro di procedere.

Non chiamare questo metodo quando il lock è sbloccato.

Non esiste valore di ritorno.

Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy