C の int の読み取りおよび書き込みはアトミックですか?
この質問は、 C における整数の読み取りおよび書き込み操作のアトミック性に関するものです。原子性により、操作が単一の分割不可能な単位として完了し、プロセス中に中断が発生しないことが保証されます。
この質問に対する答えは、システムのアーキテクチャに依存します。 IA32 などのプロセッサでは、通常、整列された int への書き込みはアトミックです。ただし、使用されるキャッシュ システムによっては、アライメントされていない書き込みがアトミックにならない場合があります。メモリが単一のキャッシュ ライン内に存在する場合、アトミック性が維持されます。
さらに、CPU と RAM 間のバスの幅もアトミック性に影響を与える可能性があります。 16 ビット バスを備えた 8086 などの古いプロセッサの場合、アラインされた 16 ビット書き込みはアトミックでしたが、8 ビット バスを備えた 8088 では同じ動作が保証されませんでした。
C/ の場合C プログラムの場合、共有値を揮発性として宣言することが重要です。これにより、オプティマイザはスレッド内で変数が変更されないと想定することがなくなり、実際の値が常に読み取られるようになります。
以上がC の整数の読み取りと書き込みは常にアトミックですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。