7.5.1 Objetos cerrojo

Un cerrojo primitivo es una primitiva de sincronización que no pertenece a ningún hilo en particular cuando está bloqueada. En Python, actualmente es las primitiva e sincronización de más bajo nivel disponible, implementada directamente por el módulo de extensión thread.

Un cerrojo primitivo está en uno de dos estados, ``bloqueado'' o ``desbloqueado''. Se crea en el estado desbloqueado. Tiene dos métodos básicos, acquire() (adquirir) y release() (liberar). Cuando el estado es desbloqueado, acquire() cambia el estado a bloqueado y retorna inmediatamente. Cuando el estado es bloqueado, acquire() se queda bloqueado hasta que por una llamada a release() desde otro hilo cambia el estado a desbloqueado. El hilo que había llamado a acquire() vuelve a ponerlo a bloqueado y retorna de inmediato. Cuando más de un hilo esté bloqueado en acquire() esperando a que se desbloquee el cerrojo, sólo uno de ellos sigue su ejecución cuando una llamada a release() retorna el estado a desbloqueado. Cuál de ellos prosigue no está definido y depende de la implementación.

Todos los métodos se ejecutan atómicamente.

acquire ([blocking = 1])
Adquirir un cerrojo, bloqueante o no bloqueante.

Si se invoca sin argumentos, bloquear la ejecución hasta que se desbloquee el cerrojo, bloquearlo y retornar. No hay valor de retorno en este caso.

Si se invoca con el argumento blocking a cierto, hacer lo mismo que si se llama sin argumentos y devolver cierto.

Si se invoca con el argumento blocking a falso, no bloquear la ejecución. Si llamándolo sin argumento se hubiera bloqueado, devolver falso de inmediato. De otro modo, hacer los mismo que al llamar sin argumentos y devolver verdadero.

release ()
Libera un bloqueo. Si el cerrojo está bloqueado, devolverlo al estado de desbloqueado y retornar. Si hay otros hilos bloqueados a la espera de que el cerrojo se desbloquee, permitir exactamente a uno que prosiga.

No se debe llamar a este método si el cerrojo está desbloqueado.

No hay valor de retorno.


Ver Sobre este documento... para obtener información sobre sugerencias.