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 | |
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.