参照元†
- メモリバリアを作成する。
- コンパイラの最適化による命令の移動、省略を防ぎ、
下記の効果をもたらす。
- メモリバリアの前に実行された命令の結果は、
メモリバリアに到達後に全て反映される。
- メモリバリアの後に実行される命令は、
メモリバリアに到達する前に実行した命令の結果を参照できる。
- ただしハードウェアレベルでは保証されない。
すなわちキャッシュコヒーレンシ、バスの内部バッファなどは考慮されない。
返り値†
/* Optimization barrier */
/* The "volatile" is due to gcc bugs */
#define barrier() __asm__ __volatile__("": : :"memory")
- メモリバリア
- __volatile__ キーワードにより、
gcc の最適化による命令の移動、省略などを防ぐ。
- memory 指定により、
入出力リストに書かれていないレジスタやメモリが変更されたり、
予期せぬメモリの破壊があることをコンパイラに伝える。
コメント†