MutexLock

public final class MutexLock

Blocca una risorsa mutex. L'uscita è la serratura. Finché il tensore di blocco

è attivo, qualsiasi altra richiesta di usare `MutexLock` con questo mutex aspetterà.

Questo è particolarmente utile per creare una sezione critica quando usato insieme a `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)
 
Mentre` fn` è in esecuzione nella sezione critica, non possono essere eseguite altre funzioni che desiderano utilizzare questa sezione critica.

Spesso il caso d'uso è che due esecuzioni dello stesso grafico, in parallelo, desiderano eseguire `fn`; e desideriamo garantire che solo uno di essi venga eseguito alla volta. Ciò è particolarmente importante se "fn" modifica una o più variabili alla volta.

È anche utile se due funzioni separate devono condividere una risorsa, ma desideriamo garantire che l'utilizzo sia esclusivo.

Metodi pubblici

Output <Object>
asOutput ()
Restituisce la maniglia simbolica di un tensore.
MutexLock statico
create ( ambito ambito, operando <?> mutex)
Metodo Factory per creare una classe che esegue il wrapping di una nuova operazione MutexLock.
Uscita <?>
mutexLock ()
Un tensore che mantiene un puntatore condiviso a un blocco sul mutex; quando il tensore viene distrutto, il conteggio dell'utilizzo del puntatore condiviso diminuisce di 1.

Metodi ereditati

Metodi pubblici

output pubblico <Object> asOutput ()

Restituisce la maniglia simbolica di un tensore.

Gli input per le operazioni TensorFlow sono output di un'altra operazione TensorFlow. Questo metodo viene utilizzato per ottenere un handle simbolico che rappresenta il calcolo dell'input.

public static MutexLock create ( ambito ambito, operando <?> mutex)

Metodo Factory per creare una classe che esegue il wrapping di una nuova operazione MutexLock.

Parametri
scopo ambito attuale
mutex La risorsa mutex da bloccare.
ritorna
  • una nuova istanza di MutexLock

output pubblico <?> mutexLock ()

Un tensore che mantiene un puntatore condiviso a un blocco sul mutex; quando il tensore viene distrutto, il conteggio degli utilizzi sul puntatore condiviso viene ridotto di 1. Quando raggiunge 0, il blocco viene rilasciato.