_lwsync似乎正在同步多个处理器和
_sync_synchronize是使用内存屏障在所有线程中进行同步。
但我想更具体地了解差异。
__lwsync:
lwsync屏障大致类似于同步,包括累积属性,但不包括订购存储/加载对,执行起来更便宜;保证MP+lwsyncs中的SC行为就足够了(MP每个线程中的lwsync(、WRC+lwsync+addr(WRC线程1上的lwsync和线程上的地址依赖关系2( ,和ISA2+lwsync+data+addr,而SB+lwsyncs和IRIW+lwsync仍然被允许。
__sync_synchronize:
此函数用于同步所有线程中的数据。调用此函数时会创建一个完整的内存屏障。它是全内存屏障的原子内置。不会在操作中向前或向后移动内存操作数。此外,将根据需要发出指令,以防止处理器在整个操作过程中推测负载,并在操作后对存储进行排队。