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.
= 1
])
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.
No se debe llamar a este método si el cerrojo está desbloqueado.
No hay valor de retorno.