Blokuje zasób mutex. Wyjściem jest zamek. Tak długo, jak tensor blokady
jest aktywna, każda inna prośba o użycie `MutexLock` z tym mutexem będzie czekać.
Jest to szczególnie przydatne do tworzenia sekcji krytycznej, gdy jest używane w połączeniu z `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)
Kiedy `fn` działa w sekcji krytycznej, nie mogą działać żadne inne funkcje, które chcą skorzystać z tej sekcji krytycznej.Często zdarza się, że dwa równoległe wykonania tego samego wykresu chcą uruchomić `fn`; i chcemy mieć pewność, że tylko jeden z nich będzie wykonywany w danym momencie. Jest to szczególnie ważne, jeśli „fn” modyfikuje jedną lub więcej zmiennych na raz.
Jest to również przydatne, jeśli dwie oddzielne funkcje muszą współdzielić zasób, ale chcemy mieć pewność, że użycie będzie wyłączne.
Metody publiczne
Wyjście <Obiekt> | jako wyjście () Zwraca symboliczny uchwyt tensora. |
statyczny MutexLock | |
Wyjście <?> | mutexLock () Tensor przechowujący wspólny wskaźnik do blokady w muteksie; gdy Tensor zostanie zniszczony, licznik użycia wspólnego wskaźnika zmniejsza się o 1. |
Metody dziedziczone
Metody publiczne
publiczne wyjście <Obiekt> asOutput ()
Zwraca symboliczny uchwyt tensora.
Dane wejściowe operacji TensorFlow są wynikami innej operacji TensorFlow. Ta metoda służy do uzyskania symbolicznego uchwytu reprezentującego obliczenia danych wejściowych.
public static MutexLock create (zakres zakresu , operand <?> mutex)
Metoda fabryczna służąca do tworzenia klasy opakowującej nową operację MutexLock.
Parametry
zakres | aktualny zakres |
---|---|
muteks | Zasób mutex do zablokowania. |
Powroty
- nowa instancja MutexLock
publiczne wyjście <?> mutexLock ()
Tensor przechowujący wspólny wskaźnik do blokady w muteksie; gdy Tensor zostanie zniszczony, licznik użycia wspólnego wskaźnika zmniejsza się o 1. Kiedy osiągnie 0, blokada zostaje zwolniona.