ホームページ > バックエンド開発 > C++ > C の整数の読み取りと書き込みは常にアトミックですか?

C の整数の読み取りと書き込みは常にアトミックですか?

DDD
リリース: 2024-11-30 09:00:18
オリジナル
669 人が閲覧しました

Are C   Integer Reads and Writes Always Atomic?

C の int の読み取りおよび書き込みはアトミックですか?

この質問は、 C における整数の読み取りおよび書き込み操作のアトミック性に関するものです。原子性により、操作が単一の分割不可能な単位として完了し、プロセス中に中断が発生しないことが保証されます。

この質問に対する答えは、システムのアーキテクチャに依存します。 IA32 などのプロセッサでは、通常、整列された int への書き込みはアトミックです。ただし、使用されるキャッシュ システムによっては、アライメントされていない書き込みがアトミックにならない場合があります。メモリが単一のキャッシュ ライン内に存在する場合、アトミック性が維持されます。

さらに、CPU と RAM 間のバスの幅もアトミック性に影響を与える可能性があります。 16 ビット バスを備えた 8086 などの古いプロセッサの場合、アラインされた 16 ビット書き込みはアトミックでしたが、8 ビット バスを備えた 8088 では同じ動作が保証されませんでした。

C/ の場合C プログラムの場合、共有値を揮発性として宣言することが重要です。これにより、オプティマイザはスレッド内で変数が変更されないと想定することがなくなり、実際の値が常に読み取られるようになります。

以上がC の整数の読み取りと書き込みは常にアトミックですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート