マルチコアで共有メモリに同時にアクセスするルールはありますか? 1つのコアが共有メモリに書き込んでいる場合、別のコアが同じメモリを同じ時刻に読み込んでいますが、問題はありますか? この種のシナリオは避けてください。マルチコア:同時に共有メモリにアクセス
0
A
答えて
0
これは競合状態と呼ばれ、そのようなコードの結果は予測できません。あなたはそれを避けなければなりません。次のいずれかを実行できます
- 変更別々のメモリを使用するアルゴリズム、または
- 同期アトミック操作を使用してアクセス、または
- は、クリティカルセクションやミューテックスのような、より高いレベルの同期構文を使用してアクセスを同期します。
@DanDanによると、複数のスレッドからの読み取りだけが問題ではありません。
0
はい、これを避ける必要があります。マルチコアとマルチスレッドで安全に行うことができるのは、副作用がない場合に限り、同時に読み取ることだけです。
関連する問題
- 1. 共有メモリへのアクセスの同期
- 2. 共有データへの同時/非同期アクセス
- 3. マルチスレッド環境で共有メモリを同期
- 4. 共有メモリ時々nullではないが
- 5. RDMAメモリ共有
- 6. "C言語で共有メモリの構造体メンバにアクセスする"
- 7. cython共有メモリ - ブロック
- 8. セマフォと共有メモリ
- 9. ビジュアルスタジオと共有メモリ
- 10. アンドロイド:ローカルネットワーク共有にアクセス
- 11. 同時非同期タスクから共有リソースに安全にアクセスできますか? (C#)
- 12. uda共有メモリ上書き?
- 13. Cメモリ共有の問題
- 14. データ配信と共有メモリ
- 15. CUDAプログラミング - 共有メモリ構成
- 16. 共有メモリを持つクラウド
- 17. JavaとC++の共有メモリ
- 18. Symbianの共有メモリの例
- 19. postgresql共有メモリの設定
- 20. 共有メモリでのバンクコンフリクトフリーアクセス
- 21. Pythonプロセス間の共有メモリ
- 22. activerecordメモリ内共有キャッシュ
- 23. 共有メモリおよびグローバルメモリアクセス
- 24. C++クラッシュの共有メモリ
- 25. HTML5 + CSS共有アクセス
- 26. 共有メモリC++読み込みと書き込みの同期
- 27. マルチコアCPUは、同じプロセスの複数のスレッドを同時にスケジュールしますか?
- 28. Large_Intを使用して共有メモリにアクセスする際の問題
- 29. fork()とコピーライト時のメモリ共有の効率化
- 30. シグナル割り込み時の空き共有メモリ
これを避けるには相互排除セマフォを使用してもよろしいですか? E.G .: 1つのコアif(!LOCK)LOCK = TRUE;別のコアif(!LOCK)LOCK = TRUE、LOCKは2つのCORES間で共有されます。 1つのコアがLOCK = TRUEを実行しているときに、別のコアが同時に実行すると(!LOCK)、それはOKですか? – shikun
いいえ、それはブール変数の競合条件です。適切なミューテックスオブジェクトを使用する必要があります(あなたの言語/ OSにどのような意味があるのか)。 –