MutexLock

classe finale publique MutexLock

Verrouille une ressource mutex. La sortie est le verrou. Tant que le tenseur de verrouillage

est vivant, toute autre demande d'utilisation de `MutexLock` avec ce mutex attendra.

Ceci est particulièrement utile pour créer une section critique lorsqu'il est utilisé conjointement avec `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)
 
Pendant que `fn` est exécuté dans la section critique, aucune autre fonction souhaitant utiliser cette section critique ne peut s'exécuter.

Souvent, le cas d'utilisation est que deux exécutions du même graphe, en parallèle, souhaitent exécuter « fn » ; et nous souhaitons nous assurer qu'un seul d'entre eux s'exécute à la fois. Ceci est particulièrement important si « fn » modifie une ou plusieurs variables à la fois.

C'est également utile si deux fonctions distinctes doivent partager une ressource, mais que nous souhaitons garantir que l'utilisation est exclusive.

Méthodes publiques

Sortie <Objet>
comme Sortie ()
Renvoie le handle symbolique d'un tenseur.
MutexLock statique
créer ( Portée de portée , Opérande <?> mutex)
Méthode d'usine pour créer une classe encapsulant une nouvelle opération MutexLock.
Sortie <?>
mutexLock ()
Un tenseur qui garde un pointeur partagé vers un verrou sur le mutex ; lorsque le Tensor est détruit, le nombre d'utilisations sur le pointeur partagé est diminué de 1.

Méthodes héritées

Méthodes publiques

sortie publique <Objet> asOutput ()

Renvoie le handle symbolique d'un tenseur.

Les entrées des opérations TensorFlow sont les sorties d'une autre opération TensorFlow. Cette méthode est utilisée pour obtenir un handle symbolique qui représente le calcul de l’entrée.

public static MutexLock créer ( Scope scope, Operand <?> mutex)

Méthode d'usine pour créer une classe encapsulant une nouvelle opération MutexLock.

Paramètres
portée portée actuelle
mutex La ressource mutex à verrouiller.
Retour
  • une nouvelle instance de MutexLock

sortie publique <?> mutexLock ()

Un tenseur qui garde un pointeur partagé vers un verrou sur le mutex ; lorsque le Tensor est détruit, le nombre d'utilisations sur le pointeur partagé est diminué de 1. Lorsqu'il atteint 0, le verrou est libéré.