メモリバリア - barrier()
概要
メモリの内容が確実に同期されることを保証する
詳細
gccでコンパイルする場合はlinux/compiler-gcc.hに定義されている
__asm__ __volatile__("": : :"memory")
が実行されると思いがちだが、IntelのCPUの場合はlinux/compiler-intel.hに定義されている
__memory_barrier()
が実行されることになる__memory_barrier()はどこで定義されているか不明な謎の関数である。。。
おそらくgcc内で定義されているシンボルと思われる
このマクロでは、直前の実行命令がコンパイラの最適化による再配置や除去を抑止し、コードに記述されている通りにメモリ参照を行うように強制する