Mathematica 9 is now available
THIS IS DOCUMENTATION FOR AN OBSOLETE PRODUCT.
SEE THE DOCUMENTATION CENTER FOR THE LATEST INFORMATION.
Mathematica > システムインターフェースと配備 > 並列計算 > 並列計算におけるリソースの共有 > CriticalSection >
Mathematica > コアとなる言語 > 調整とデバッグ > 並列計算 > 並列計算におけるリソースの共有 > CriticalSection >

CriticalSection

CriticalSection
並列計算について変数 をロックし,expr を評価し, を解放する.
  • 任意の並列カーネル上で同時実行できる同じロック変数の危険域が最高で1つ許容される.
  • ロックとして使われる変数はマスターカーネルの値を持っていてはならない.
1ブロックのコードを他のスレッドの干渉から保護する:
更新コードへのアクセスから保護しないとサブカーネルが結果を上書きしてしまうかもしれない:
1ブロックのコードを他のスレッドの干渉から保護する:
In[1]:=
Click for copyable input
In[2]:=
Click for copyable input
Out[2]=
更新コードへのアクセスから保護しないとサブカーネルが結果を上書きしてしまうかもしれない:
In[3]:=
Click for copyable input
Out[3]=
ロック変数は の形でもよい:
別々の読み書き操作はスレッドセーフではない:
CriticalSectionを使ってコードセクション全体を原子的にする:
ロックはカーネルIDを局所変数に書き込むことで得られる:
危険域の代りに共有関数を使って同期することができる:
これより効率は下がるが,共有変数と危険域を使うこともできる:
ロック変数は危険域で使用される前に値を持ってはならない:
デッドロックは放棄することで解消できる:
デッドロックが回避できる「食事をする哲学者」:
バージョン 7 の新機能
Ask a question about this page  |  Suggest an improvement  |  Leave a message for the team
フォーマット:   HTML  |  CDF