MutexLock

MutexLock classe final pública

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

está ativo, qualquer outra solicitação para usar `MutexLock` com este mutex irá esperar.

Isto é particularmente útil para a criação de uma secção crítica, quando utilizado 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` está sendo executado na secção crítica, não há outras funções que desejem utilizar esta secção crítica pode executar.

Freqüentemente, o caso de uso é que duas execuções do mesmo gráfico, em paralelo, desejam executar `fn`; e desejamos garantir que apenas um deles seja executado por vez. Isso é 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 queremos garantir que o uso seja exclusivo.

Métodos Públicos

Output <Object>
asOutput ()
Retorna o identificador simbólico de um tensor.
estática MutexLock
criar ( Scope escopo, Operando <?> mutex)
Método de fábrica para criar uma classe que envolve uma nova operação MutexLock.
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 diminui em 1.

Métodos herdados

Métodos Públicos

pública Output <Object> asOutput ()

Retorna o identificador simbólico de um tensor.

As entradas para as 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 criar ( Scope escopo, Operando <?> mutex)

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

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

pública de 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 diminui em 1. Quando chega a 0, o bloqueio é liberado.