問題タブ [nonatomic]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
483 参照

c++ - C ++ 11およびOpenMPの非アトミックメモリ位置へのアトミックアクセス?

OpenMP は、C++11 とは対照的に、変数ではなくメモリ操作の観点から原子性を使用して動作します。これにより、たとえば、コンパイル時にサイズが不明なベクトルに格納されている整数に対してアトミックな読み取り/書き込みを使用できます。

C++11 では、これを実現することはできません。メモリモデルを緩和することで、アトミック変数に非アトミックとしてアクセスできますが、アトミック要素のベクトルのサイズを変更することはできません。

C++ がアトミック メモリ操作による非アトミック変数へのアクセスを許可しない理由があることを理解しています。しかし、これらの理由が OpenMP にも当てはまらないのはなぜだろうか。

たとえば、N4013では、 「アトミックとして宣言されていないデータにアトミック操作を完全に移植可能に適用する合理的な方法はない」と述べられています。OpenMP がそのような移植性を保証できるのに、C++ が保証できないというのはどうしてでしょうか?

0 投票する
5 に答える
5873 参照

multithreading - アトミック操作は他のスレッドをブロックしますか?

「アトミック vs 非アトミック」という概念を頭の中に定着させようとしています。私の最初の問題は、それに関する「現実のアナロジー」を見つけることができなかったことです。アトミック操作または同様のものに対する顧客/レストラン関係のように。

また、アトミック操作がスレッドセーフ プログラミングにどのように組み込まれるかについても学びたいと思います。

このブログ投稿では; http://preshing.com/20130618/atomic-vs-non-atomic-operations/ 次のように言及されています。

共有メモリで動作する操作は、他のスレッドと比較して単一のステップで完了する場合、アトミックです。共有変数でアトミック ストアが実行されると、他のスレッドは変更が半分完了したことを確認できません。共有変数でアトミック ロードが実行されると、ある瞬間に表示された値全体が読み取られます。非アトミックなロードとストアは、これらの保証を行いません。

「他のスレッドは半分完了した変更を観察できない」とはどういう意味ですか?

つまり、スレッドはアトミック操作が完了するまで待機しますか? そのスレッドがその操作についてどのように知っているかはアトミックですか? たとえば、.NET では、フラグを設定して他のスレッドをブロックするオブジェクトをロックするかどうかを理解できます。しかし、アトミックはどうですか?他のスレッドは、アトミック操作と非アトミック操作の違いをどのように認識していますか?

また、上記のステートメントが当てはまる場合、すべてのアトミック操作はスレッドセーフですか?

0 投票する
1 に答える
61 参照

r - Rのリストから関数を削除するには?

私は2つの機能を持つリストを持っています:

インデックスを知らずに関数 foo を削除するにはどうすればよいですか?

私はこれを試しました(サブ設定のインデックスを取得するため):

ループせずに非アトミックをリストから削除する簡単な方法はありますか?