問題タブ [atomic]

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 投票する
4 に答える
1197 参照

multithreading - ロック (スレッド化) はアトミックですか?

これはばかげた質問のように聞こえるかもしれませんが、マルチスレッド アプリでリソースをロックすると、そのリソースで発生する操作はアトミックに行われるのでしょうか?

IE: リソースがロックされている間に、プロセッサが中断されたり、コンテキストの切り替えが発生したりする可能性はありますか? そうである場合、そのプロセスを終了するために再びスケジュールされるまで、他の誰もこのリソースにアクセスできません。高価な操作のように聞こえます。

0 投票する
2 に答える
812 参照

c++ - 競合するアトミック操作は互いに飢える可能性がありますか?

2 つのスレッドを持つプログラムを想像してください。次のコードを実行しています (CAS はCompare and Swapを指します)。

0xdeadbeef が「テスト」に書き込まれないように、スレッド B がスレッド A の CAS を永続的に失敗させる可能性はありますか? それとも、自然なスケジューリングのジッタは、実際にはこれが決して起こらないことを意味するのでしょうか? スレッド A の while ループ内で何らかの作業が行われた場合はどうなるでしょうか。

0 投票する
4 に答える
9284 参照

c - fwrite はアトミックですか?

簡単な質問:

プログラムにログを追加する必要があります。

2 つのプロセスが同じファイルに対して「fwrite」を使用するが、同じファイル記述子ではない場合、書き込まれるログ メッセージはアトミックまたは混合になります。長さ制限はありますか?

ANSI-C の動作が定義されているか、または実装が定義されていますか? 後者の場合、MacOSX、Linux、および Windows MSVC には何がありますか?

0 投票する
4 に答える
3338 参照

.net - .NET でのアトミック ファイル コピー

System.IO.File.Copy(...) 関数を使用してファイルをコピーするサーバー アプリを構築しています。私のファイルはかなり大きくなる可能性があるため、マシンがクラッシュした場合、コピー中にクラッシュする可能性がかなりあります。

サービスを再起動した後、コピー タスクを取得して続行できるはずです。コピーが正常に完了したか、サーバー クラッシュによって中断されたかを検出するにはどうすればよいですか?

私の現在の計画は、ファイルを一時的な名前にコピーし、コピーが完了したら、ファイルの名前を最終的な名前に変更することです。このようにして、ファイルの命名により、クラッシュの状態情報を引き継ぐことができます。

良い/より良い提案はありますか?

編集: ターゲット OS は Win2003 であるため、トランザクション NTFS は利用できません

0 投票する
2 に答える
1248 参照

.net - .NETではFile.Delete()はアトミックです

ターゲットOS:Win2003

ファイル操作のアトミック性に関する他のSOの質問に投稿されているように、Win32は単にトランザクション用に設計されていません。それでも、ファイルの削除が非アトミックである可能性があるのではないかと思います。結局のところ、それは削除されるかどうかのどちらかです。または、削除中にシステムクラッシュなどが原因で、ファイルがNTFSファイルシステム上の他の中間状態のままになる可能性がありますか?

0 投票する
6 に答える
9033 参照

c# - C#マルチスレッドリスト操作

私がこのようなものを持っている場合(擬似コード):

両方の関数を並行して実行すると、マルチスレッドの問題(または予期しない動作)が発生する可能性はありますか?

ユースケースはエラーのリストであり、いつでもクリアできます(新しい空のリストを割り当てるだけです)。

編集:私の仮定は

  • 1つのスレッドだけが要素を追加します
  • クリア操作が問題なく成功する限り、忘れられた要素は問題ありません(つまり、クリアしてから新しい要素を追加するまでの競合状態)。
  • .NET 2.0
0 投票する
4 に答える
7893 参照

objective-c - Objective CでBOOLの読み取り/書き込みはアトミックですか?

2 つのスレッドが「同時に」BOOL を YES に設定するとどうなりますか?

0 投票する
9 に答える
29074 参照

c++ - x86、arm、GCC、およびiccで動作するLinuxでアトミック操作を実行するには?

現代のすべての OS は、現在、いくつかのアトミック操作を提供しています。

  • WindowsにはInterlocked*APIがあります
  • FreeBSD には<machine/atomic.h>
  • ソラリスは<atomic.h>
  • Mac OS X には<libkern/OSAtomic.h>

Linuxの場合、そのようなものはありますか?

  • x86、x86_64、 armなど、ほとんどの Linux 対応プラットフォームで動作する必要があります 。
  • 少なくとも GCC と Intel Compiler で動作する必要があります。
  • glib や qt のような 3rd par ライブラリを使用する必要はありません。
  • C++ で動作させる必要があります (C は必要ありません)

問題:

  • GCC アトミック ビルトイン__sync_*は、すべてのプラットフォーム (ARM) でサポートされているわけではなく、Intel コンパイラでもサポートされていません。
  • 私の知る限り<asm/atomic.h>、ユーザー空間では使用しないでください。私はまったく使用していません。また、Intel コンパイラで動作するかどうかもわかりません。

助言がありますか?

関連する質問がたくさんあることは知っていますが、そのうちのいくつかは__sync*私 (ARM) には実現不可能であると指摘し、いくつかは を指摘していasm/atomic.hます。

GCC用にこれを行うインラインアセンブリライブラリがあるかもしれません(ICCはgccアセンブリをサポートしています)?

編集:

追加操作のみの非常に部分的な解決策があります (アトミック カウンターの実装は許可しますが、CAS を必要とする自由構造のロックは許可しません)。

を使用する場合libstc++(インテル コンパイラは を使用libstdc++) 、または__gnu_cxx::__exchange_and_addで定義されたものを使用できます。コンパイラのバージョンに依存します。<ext/atomicity.h><bits/atomicity.h>

ただし、CAS をサポートするものを見たいと思っています。

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

c - アトミック操作を実行するための関数

C ランタイム ライブラリまたはその他のユーティリティ ライブラリでサポートされているアトミック操作 (整数のインクリメント/デクリメントなど) などを実行する関数はありますか?

はいの場合、そのような関数を使用してどの操作をアトミックにすることができますか?

このような関数を使用することは、mutex などの通常の同期プリミティブよりも有益でしょうか?

OS : Windows、Linux、Solaris、VxWorks

0 投票する
3 に答える
1051 参照

c++ - ポータブル C++ アトミック スワップ (Windows - GNU/Linux - MacOSX)

ロックフリーのアトミックスワップ機能を提供する無料の移植可能な(Windows、GNU/Linux & MacOSX) ライブラリはありますか?

そうでない場合、これらの各プラットフォームにどのように実装しますか? (VC++ または g++ を使用する x86)

ありがとう