title: difference in mfence and asm volatile ("" : : : "memory")
body: <p>As far as I have understood, <code>mfence</code> is a hardware memory barrier while <code>asm volatile ("" : : : "memory")</code> is a compiler barrier. But,can <code>asm volatile ("" : : : "memory")</code> be used in place of mfence.</p>
  
  <p>The reason I have got confused is <a href="http://gcc.gnu.org/ml/gcc/2003-04/msg01180.html">this link</a></p>