内部に関数を通過する複数のスレッドがある場合、内部に変数の代入を持つforループがあります。変数の値が複数のスレッド間でどのように混乱することはありませんか?メモリはスレッド内でどのように管理されますか?
1
A
答えて
0
各スレッドには、「スレッドスタック」という名前のメモリブロックがあり、パラメータまたは中間結果である値の型と参照(ヒープへのポインタ)が格納されます。32ビットで約1MB、64ビットで4MBです。このスペースはスレッド間で共有されません。残りのもの(つまり、共有された値の型と参照、および参照が参照される可能性のあるオブジェクト)はヒープに格納されます。これは残りのRAMメモリであり、すべてのスレッドで共有されます。
競合状態など、スレッド間で値が混乱する可能性があります。複数のスレッドから64ビットの値を32ビットのCPUで更新しようとすると、たとえば、Interlock
およびMonitor
ユーティリティのように、.NETで多くの同期プリミティブが発生するのを防ぐために、矛盾が発生する可能性があります。また、List<>
のようなスレッドセーフではないオブジェクトは、同期なしで複数のスレッドを使用すると混乱する可能性があります。単純な整数のインクリメントは、操作がアトミックでない場合は値を失う可能性があります。
読んでください。私はあなたに、Jeffrey RichterのC#経由でCLRをお勧めします。すべての.NET開発者は実際にその本を読むべきです。
関連する問題
- 1. メモリはPythonでどのように管理されますか
- 2. 仮想属性はどのようにメモリ内で管理されますか?
- 3. スレッド間でのメモリ管理
- 4. AngularjsはngViewでメモリ管理をどのように処理しますか?
- 5. スレッドはHttpApplicationによってどのように作成され、管理されますか?
- 6. スレッドはスレッドプールによって管理されていますか?
- 7. c#整数は内部的にどのように管理されますか?
- 8. 1つの仮想アドレス空間内のプロセススレッドのメモリ管理はどのように行われますか?
- 9. V8はオブジェクトインスタンスのメモリをどのように管理しますか?
- 10. Javaスレッドのメモリ管理の問題
- 11. Webアプリケーションのバージョン管理はどのように処理されますか?
- 12. Cで構造体のメモリをどのように管理しますか?
- 13. joblib並列関数はどのようにメモリを管理しますか?
- 14. Qt QML Javascriptはどのようにメモリを管理しますか?
- 15. 動的メモリをstd :: vectorでどのように管理しますか?
- 16. クラスのメモリはC++でどのように処理されますか?
- 17. Tomcatのシャットダウン時にExecutorServiceによって管理されるスレッドはどうなりますか?
- 18. Java - JNI Cコードのメモリはどのように管理されていますか?
- 19. npmパッケージはnodesterでどのように管理されますか?
- 20. CMTとBMTはEJBでどのように管理されますか?
- 21. テンソル変換中にメモリをどのように管理しますか?
- 22. メモリ管理アルゴリズムはどこで使用されていますか?
- 23. スレッドはCOMコンポーネント内でどのように作成されますか?
- 24. 共有ライブラリテキストセクションの複数のコピーは、どのようにして物理メモリ内で回避されますか?
- 25. アクティビティのメモリ管理はローカルサービスにバインドされて変更されますか?
- 26. 管理されていない配列を管理対象スレッドに渡す。 - メモリの破損
- 27. OSによるメモリ管理
- 28. スレッドがループ内でどのように実行されるか
- 29. ARCでこのUIBarButtonItemのメモリを適切に管理するにはどうすればよいですか?
- 30. ネットワーク管理者にはどのように隠されていますか
*同じ*スレッドが同じ関数の2回の実行の途中にある場合(例えば、関数が再帰的な場合など)、メモリが混乱することはありません。なぜ2つのスレッドが関数を実行していたのですか? – user2357112
関数のコードだけでアクセスできる関数のローカル変数、またはプログラム全体の他のコードからアクセス可能なグローバル変数を参照していましたか?ローカル変数を意味するなら、すべてのスレッドはその中の_copy_を受け取ります。グローバル変数を意味する場合は、もちろん、特別な予防措置を講じない限り、複数のスレッドが値を混乱させる可能性があります。 –
単一のスレッドが同じ機能を2度同時に実行する場合と同じ方法です(再帰など)。 –