MutexLock

MutexLock public final class

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 la creación de una sección crítica cuando se utiliza 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` fn` se está ejecutando en la sección crítica, no hay otras funciones que deseen utilizar esta sección crítica puede ejecutar.

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.
estática MutexLock
crear ( Alcance 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

pública de salida <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 crear ( Alcance 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

pública de 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. Cuando llega a 0, se libera el bloqueo.