MutexLock

classe final pública MutexLock

Bloqueia um recurso mutex. A saída é a fechadura. Desde que o tensor de bloqueio

estiver ativo, qualquer outro pedido para usar `MutexLock` com este mutex aguardará.

Isto é particularmente útil para criar uma seção crítica quando usado em conjunto com `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)
 
Enquanto `fn` estiver sendo executado na seção crítica, nenhuma outra função que deseje usar esta seção crítica pode ser executada.

Frequentemente o caso de uso é que duas execuções do mesmo gráfico, em paralelo, desejam executar `fn`; e queremos garantir que apenas um deles seja executado por vez. Isto é especialmente importante se `fn` modificar uma ou mais variáveis ​​por vez.

Também é útil se duas funções separadas devem compartilhar um recurso, mas desejamos garantir que o uso seja exclusivo.

Métodos públicos

Saída <Objeto>
comoSaída ()
Retorna o identificador simbólico de um tensor.
estático MutexLock
create ( Escopo do escopo, Operando <?> mutex)
Método de fábrica para criar uma classe envolvendo uma nova operação MutexLock.
Saída <?>
mutexLock ()
Um tensor que mantém um ponteiro compartilhado para um bloqueio no mutex; quando o tensor é destruído, a contagem de uso no ponteiro compartilhado é diminuída em 1.

Métodos Herdados

Métodos públicos

Public Output <Object> asOutput ()

Retorna o identificador simbólico de um tensor.

As entradas para operações do TensorFlow são saídas de outra operação do TensorFlow. Este método é usado para obter um identificador simbólico que representa o cálculo da entrada.

public static MutexLock create ( Escopo do escopo, Operando <?> mutex)

Método de fábrica para criar uma classe envolvendo uma nova operação MutexLock.

Parâmetros
alcance escopo atual
mutex O recurso mutex a ser bloqueado.
Devoluções
  • uma nova instância do MutexLock

Public Output <?> mutexLock ()

Um tensor que mantém um ponteiro compartilhado para um bloqueio no mutex; quando o tensor é destruído, a contagem de uso no ponteiro compartilhado é diminuída em 1. Quando atinge 0, o bloqueio é liberado.