MutexLock

MutexLock de clase final pública

Bloquea un recurso de exclusión mutua. La salida es la cerradura. Siempre que el tensor de bloqueo

está vivo, cualquier otra solicitud para usar `MutexLock` con este mutex esperará.

Esto es particularmente útil para crear una sección crítica cuando se usa junto con `MutexLockIdentity`:

mutex = mutex_v2(
   shared_name=handle_name, container=container, name=name)
 
 def execute_in_critical_section(fn, *args, **kwargs):
   lock = gen_resource_variable_ops.mutex_lock(mutex)
 
   with ops.control_dependencies([lock]):
     r = fn(*args, **kwargs)
 
   with ops.control_dependencies(nest.flatten(r)):
     with ops.colocate_with(mutex):
       ensure_lock_exists = mutex_lock_identity(lock)
 
     # Make sure that if any element of r is accessed, all of
     # them are executed together.
     r = nest.map_structure(tf.identity, r)
 
   with ops.control_dependencies([ensure_lock_exists]):
     return nest.map_structure(tf.identity, r)
 
Mientras se ejecuta` fn` en la sección crítica, no se pueden ejecutar otras funciones que deseen usar esta sección crítica.

A menudo, el caso de uso es que dos ejecuciones del mismo gráfico, en paralelo, desean ejecutar `fn`; y deseamos asegurarnos de que solo uno de ellos se ejecute a la vez. Esto es especialmente importante si `fn` modifica una o más variables a la vez.

También es útil si dos funciones separadas deben compartir un recurso, pero deseamos asegurarnos de que el uso sea exclusivo.

Métodos públicos

Salida <Objeto>
asOutput ()
Devuelve el identificador simbólico de un tensor.
MutexLock estático
crear ( ámbito de alcance, operando <?> mutex)
Método de fábrica para crear una clase que envuelva una nueva operación MutexLock.
Salida <?>
mutexLock ()
Un tensor que mantiene un puntero compartido a un bloqueo en el mutex; cuando se destruye el tensor, el recuento de uso del puntero compartido se reduce en 1.

Métodos heredados

Métodos públicos

Salida pública <Objeto> asOutput ()

Devuelve el identificador simbólico de un tensor.

Las entradas a las operaciones de TensorFlow son salidas de otra operación de TensorFlow. Este método se utiliza para obtener un identificador simbólico que representa el cálculo de la entrada.

public static MutexLock create ( alcance de alcance, operando <?> mutex)

Método de fábrica para crear una clase que envuelva una nueva operación MutexLock.

Parámetros
alcance alcance actual
mutex El recurso mutex que se va a bloquear.
Devoluciones
  • una nueva instancia de MutexLock

Salida pública <?> mutexLock ()

Un tensor que mantiene un puntero compartido a un bloqueo en el mutex; cuando se destruye el tensor, el recuento de uso del puntero compartido se reduce en 1. Cuando llega a 0, se libera el bloqueo.