[解決済み] c++, std::atomic, std::memory_order とは何か、どのように使うか?
質問
とは何か、説明できる人はいますか?
std::memory_order
とは何か、また、それらをどのように
std::atomic<>
?
ここに参考文献といくつかの例を見つけましたが、全く理解できません。 http://en.cppreference.com/w/cpp/atomic/memory_order
どのように解決するのですか?
<ブロッククオートstd::memory_orderとは何か、どなたかわかりやすく説明していただけませんでしょうか。
私が見つけた様々なメモリ順序に関する最高の "平易な英語" の説明は、Bartoz Milewski のリラックスしたアトミックに関する記事です。 http://bartoszmilewski.com/2008/12/01/c-atomics-and-memory-ordering/
そして、その続きの記事。 http://bartoszmilewski.com/2008/12/23/the-inscrutable-c-memory-model/
しかし、これらの記事は良い入門書ですが、C++11 標準より前のものであり、安全に使用するために知っておくべきことすべてを教えてくれるわけではないことに注意してください。
また、std::atomic<> でどのように使用するのでしょうか?
ここで私が一番言いたいのは
をしないことです。
. 緩和されたアトミックはC++11で最も厄介で危険なものです.
std::atomic<T>
をデフォルトのメモリ順序 (順次的整合性) で使用することです。ただし、緩和されたメモリ順序を使用することによって解決できるパフォーマンス問題があることを本当に、本当に確認する必要があります。
上記のリンク先の 2 番目の記事で、Bartoz Milewski は次のような結論に達しています。
C++の弱原理について推論しようとしたとき、私は自分自身が何に巻き込まれているのかまったくわかりませんでした。 C++ 弱原理について推論しようとしたとき、自分自身が何に巻き込まれているのかわかりませんでした。その背後にある理論は非常に複雑で、ほとんど使用できません。 使用できません。3人(Anthony、Hans、そして私)と 比較的単純なアルゴリズムの証明を完成させるのに、3人(アンソニー、ハンス、私)と 比較的単純なアルゴリズムの証明を完成させるのに、3人(アンソニー、ハンス、私)がかりで規格を修正しました。同じことを弱い原子論に基づくロックフリーの待ち行列に対して行うことを想像してみてください。 弱原理に基づくロックフリーのキューに対して同じことをするのを想像してみてください!
関連
-
[解決済み] 既に.objで定義されている-二重包含はない
-
[解決済み】Enterキーを押して続行する
-
[解決済み】'std::cout'への未定義の参照
-
[解決済み] 1ビットのセット、クリア、トグルはどのように行うのですか?
-
[解決済み] コピーアンドスワップ慣用句とは?
-
[解決済み] C++11では、標準化されたメモリモデルが導入されました。その意味するところは?そして、C++プログラミングにどのような影響を与えるのでしょうか?
-
[解決済み] スマートポインターとは何ですか?
-
[解決済み] アトミック属性と非アトミック属性の違いは何ですか?
-
[解決済み] プロセスとスレッドの違いは何ですか?
-
[解決済み] C++11の'typedef'と'using'の違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 unsigned int vs. size_t
-
[解決済み】致命的なエラー LNK1169: ゲームプログラミングで1つ以上の多重定義されたシンボルが発見された
-
[解決済み】Cygwin Make bash コマンドが見つかりません。
-
[解決済み】テンプレートの引数1が無効です(Code::Blocks Win Vista) - テンプレートは使いません。
-
[解決済み】C++の変数はイニシャライザーを持っているが、不完全な型?
-
[解決済み] 非常に基本的なC++プログラムの問題 - バイナリ式への無効なオペランド
-
[解決済み】「Expected '(' for function-style cast or type construction」エラーの意味とは?
-
[解決済み】std::cin.getline( ) vs. std::cin
-
[解決済み】VC++の致命的なエラーLNK1168:書き込みのためにfilename.exeを開くことができません。
-
[解決済み] 警告:暗黙の定数変換でのオーバーフロー