MutexLock

clase final pública MutexLock

Bloquea un recurso mutex. La salida es la cerradura. Mientras el tensor de bloqueo

está activo, 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 "fn" se ejecuta en la sección crítica, no se pueden ejecutar otras funciones que deseen utilizar 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>
como salida ()
Devuelve el identificador simbólico de un tensor.
bloqueo mutex estático
crear (alcance alcance , operando <?> exclusión mutua)
Método de fábrica para crear una clase que envuelve una nueva operación MutexLock.
Salida <?>
bloqueo mutex ()
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> comoSalida ()

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.

creación pública estática de MutexLock (alcance alcance , operando <?> mutex)

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

Parámetros
alcance alcance actual
exclusión mutua El recurso mutex para 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 disminuye en 1. Cuando llega a 0, se libera el bloqueo.