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