あるために正しく機能しません。共有されていることです。プライベート・メモリーとして宣言しています。つめの問題が解決します。つめの理由は、スレッド間のグローバル変数の共有です。各スレッドの各反復で計算したすべての部分和を収集するため、プライベートにできません。解決方法はクリティカル・セクションを使用することです。クリティカル・セクションは、コードのブロックに対して複数のアクセスが行われることを防ぎます。スレッドがクリティカル・セクションに遭遇すると、ほかのスレッドがすべてのクリティカル・セクションに存在しない場合のみ、クリティカル・セクションに入ります。次の例は名前のないクリティカル・セクションを使用しています。x);すべてのスレッドが同じグローバル・クリティカル・セクションを効率的に利用する必要があるため、グローバルまたは無名のクリティカル・セクションはパフォーマンスに影響を与えます。名前付きのクリティカル・セクションが用意されています。名前付きのクリティカル・セクションを利用すると、より細粒度の同期が可能になるため、特定のセクションでブロックが必要なスレッドのみをブロックするだけでかまいません。次の例は、前の例よりもパフォーマンスが向上します。x);名前付きのクリティカル・セクションを利用すると、アプリケーションで複数のクリティカル・セクションを使用できるため、複数のスレッドを同時に複数のクリティカル・セクションで処理することができます。検出できないデッドロックが発生する可能性があります。複数のクリティカル・セクションを使用する場合は、サブルーチンで隠れてしまう可能性があるクリティカル・セクションの調査に細心の注意を払うようにしてください。アトミック操作クリティカル・セクションの利用は、保護されたコード部分の高いスレッド化競合まではパフォーマンスに優れていることが知られています。クリティカル・セクションに入る前にスレッドが待つ必要がある場合、オペレーティング・システムはカーネルレベルの同期メカニズムによりスレッドをスリーピング・モードにして、リソースから合図があると復帰させます。この処理によりプログラム実行に追加のオーバーヘッドが発生します。オーバーヘッドに対処するには、アトミック操作のようなアプローチを使用します。アトミック操作の定義としては、中断されないことが保証されており、競合状態を回避するために共有メモリー位置を更新するステートメントに役立ちます。下記のコード行で、開発者は変数がステートメントで一定であることが重要であると判断しました。ような高水準言語のステートメントは中断可能な複数のアセンブリー命令に変換されます。追加、変数のメモリーへの書き込みのアセンブリー・ステートメントでそれぞれ変更されます。構文は、ステートメントが中断されることなくアトミックに実行されます。使用されるオペレーティング・システムおよびハードウェアの機能から、ステートメントを実装するために最も効率的な手法を選択します。つの式しかない単純な基本操作になることがあります。保護するためのアトミック操作が役に立たなくなります。このようなループ専用の節を用意しています。倍の部分和の合計を計算するループについて考えてみます。は正しい結果を生成するように共有する必要がありますが、複数のスレッドによるアクセスを許可するためにプライベートにする必要もあります。指定節を使用しています。グローバルコピーに格納します。コンパイラーが必要です。ランタイム・ライブラリーを互換モードでプロジェクトにリンクする必要があります。ランタイム・ライブラリーを使用してください。静的分析ではなく動的分析を行うことに注意してください。分析は実行されるコードだけで行われます。このため、適切にコードをカバーするには、プログラムの異なる部分を実行する複数の分析を行う必要があります。メモリー使用量が増加するため、小さい代表的なテスト問題を選択することが非常に重要です。実行時間が数秒のワークロードが最適です。マルチスレッド・コードの適切なセクションをテストすることが目的なので、ワークロードが現実的である必要はありません。マルチスレッド・アプリケーションでは、共有リソースにアクセスするコード領域へのエントリーの同期をとるために、ロックが使用されます。ロックで保護されたコード領域を「クリティカル・セクション」と呼びます。システムヒープからのメモリーの割り当ては、単純な処理ではありません。これは、システム・ランタイム・ライブラリーが、ヒープへのアクセス同期にロックを使用するためです。Applications」の日本語参考訳です。サイトはエクセルソフト株式会社が運営しています。社名、製品名などは一般に各社の表示、商標または登録商標です。