MutexLock

classe final pública MutexLock

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

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

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` está sendo executado na seção crítica, nenhuma outra função que deseje usar esta seção crítica pode ser executada.

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. Isto é especialmente importante se `fn` modifica 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>
asOutput ()
Retorna o identificador simbólico de um tensor.
MutexLock estático
criar (escopo do escopo , operando <?> mutex)
Método de fábrica para criar uma classe que envolve 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 do ponteiro compartilhado é diminuída em 1.

Métodos herdados

Métodos Públicos

Saída pública <Objeto> 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 que envolve uma nova operação MutexLock.

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

Saída pública <?> mutexLock ()

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