MutexLock

パブリック最終クラスMutexLock

ミューテックスリソースをロックします。出力はロックです。ロックテンソルがある限り

が生きている場合、このミューテックスで `MutexLock` を使用する他のリクエストは待機します。

これは、`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)
 
。 `fn` がクリティカル セクションで実行されている間、このクリティカル セクションを使用したい他の関数は実行できません。

多くの場合、同じグラフの 2 つの実行が並行して `fn` を実行したいというユースケースが考えられます。そして、一度にそのうちの 1 つだけが実行されるようにしたいと考えています。これは、「fn」が一度に 1 つ以上の変数を変更する場合に特に重要です。

これは、2 つの別個の関数がリソースを共有する必要があるが、確実に排他的に使用したい場合にも便利です。

パブリックメソッド

出力<オブジェクト>
asOutput ()
テンソルのシンボリック ハンドルを返します。
静的MutexLock
create (スコープscope、オペランド<?>ミューテックス)
新しい MutexLock オペレーションをラップするクラスを作成するためのファクトリ メソッド。
出力<?>
ミューテックスロック()
ミューテックス上のロックへの共有ポインタを保持するテンソル。 Tensor が破棄されると、共有ポインターの使用カウントが 1 減ります。

継承されたメソッド

パブリックメソッド

public Output <オブジェクト> asOutput ()

テンソルのシンボリック ハンドルを返します。

TensorFlow オペレーションへの入力は、別の TensorFlow オペレーションの出力です。このメソッドは、入力の計算を表すシンボリック ハンドルを取得するために使用されます。

public static MutexLock create (スコープscope、オペランド<?>ミューテックス)

新しい MutexLock オペレーションをラップするクラスを作成するためのファクトリ メソッド。

パラメーター
範囲現在のスコープ
ミューテックスロックするミューテックス リソース。
戻り値
  • MutexLock の新しいインスタンス

public Output <?> mutexLock ()

ミューテックス上のロックへの共有ポインタを保持するテンソル。 Tensor が破棄されると、共有ポインターの使用カウントが 1 減ります。0 に達すると、ロックが解放されます。