SetSharedVariable

SetSharedVariable[s1,s2,]

siを,値がすべての並列カーネルで同期される共有変数として宣言する.

詳細

  • 共有変数の一意的な値はマスターカーネルに保存され,並列サブカーネルへのすべてのアクセスがマスターカーネルを通して同期される.
  • 値のない共有変数を評価するとNullになる.
  • SetSharedVariableは,属性HoldAllを有する.

例題

すべて開くすべて閉じる

  (1)

xsを(大域的な)共有変数にする:

それぞれのサブカーネルが(大域的)共有カーネルの値分だけ増分する:

共有にしなければ,それぞれのサブカーネルは変数の自分の(局所的)コピーを使う:

スコープ  (8)

割当て  (3)

一つの値を共有する:

共有変数に新たな値を割り当てる:

最後に行われた割当てだけが残る:

共有リストに要素を追加する:

パーツと共有変数  (3)

共有リストの単一の要素に効率的にアクセスする:

共有変数の単一の要素を変更する:

共有変数の一部を変更する:

連想  (2)

特定のキーに割り当てる:

キーが文字列の場合はKeyが省略できる:

連想中の値を変更する:

一般化と拡張  (1)

マスターカーネルで定義された遅延的な値はマスターカーネルで評価される:

サブカーネルで定義された遅延的な値は値を求めているカーネルで評価される:

アプリケーション  (5)

共有変数を使って無限探索における入出力を同期する:

が素数となるような を計算が手動で放棄されるまで求める:

素数が見付かり次第すべての評価が停止するように共有変数を使って合図する:

共有変数を使って行うべきタスクを渡す:

主な計算ステップを数えて計算の進行をモニターする:

求まり次第結果を返す:

結果がリアルタイムで現れるのを見る:

特性と関係  (3)

$KernelCountは事実上共有変数である:

共有変数は$SharedVariablesにリストされる:

関数の定義が共有したければSetSharedFunctionを使うとよい:

共有関数は,事実上,マスターカーネルで評価される:

考えられる問題  (3)

連想アクセスの1重ブラケット記法は共有変数ではサポートされていない:

変りにPart記法を使う:

別々の読み書き操作はスレッドセーフではない:

同期に原子的更新を使う:

あるいは,CriticalSectionを使ってコードセクション全体を原子的にする:

値が大きい行列である共有変数を作る:

その要素にアクセスすると行列全体が繰り返しサブカーネルに転送される:

Unevaluatedを使って共有変数の一部についての特殊コードで変数が参照できるようにする:

Wolfram Research (2008), SetSharedVariable, Wolfram言語関数, https://reference.wolfram.com/language/ref/SetSharedVariable.html.

テキスト

Wolfram Research (2008), SetSharedVariable, Wolfram言語関数, https://reference.wolfram.com/language/ref/SetSharedVariable.html.

CMS

Wolfram Language. 2008. "SetSharedVariable." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/SetSharedVariable.html.

APA

Wolfram Language. (2008). SetSharedVariable. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/SetSharedVariable.html

BibTeX

@misc{reference.wolfram_2024_setsharedvariable, author="Wolfram Research", title="{SetSharedVariable}", year="2008", howpublished="\url{https://reference.wolfram.com/language/ref/SetSharedVariable.html}", note=[Accessed: 22-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_setsharedvariable, organization={Wolfram Research}, title={SetSharedVariable}, year={2008}, url={https://reference.wolfram.com/language/ref/SetSharedVariable.html}, note=[Accessed: 22-November-2024 ]}