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.
Constantes
Chaîne | OP_NAME | Le nom de cette opération, tel que connu par le moteur principal TensorFlow |
Méthodes publiques
Sortie < TType > | comme Sortie () Renvoie le handle symbolique du tenseur. |
MutexLock statique | |
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
Constantes
chaîne finale statique publique OP_NAME
Le nom de cette opération, tel que connu par le moteur principal TensorFlow
Méthodes publiques
sortie publique < TType > asOutput ()
Renvoie le handle symbolique du 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é.