【向intel_cyu 提问】InterlockedIncrementAcquire()和InterlockedIncrementRelease()是不是用sfence和lfence指令实现的?编程的时候会直接使用这种底层的指令吗?

best_dba 2008-04-17 08:32:52
InterlockedIncrementAcquire()和InterlockedIncrementRelease()是不是用sfence和lfence指令实现的?编程的时候会直接使用这种底层的指令吗?
...全文
195 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
intel_cyu 2008-04-18
  • 打赏
  • 举报
回复
InterlockedIncrementAcquire/InterlockedIncrementRelease 在不同处理器上实现是不一样的。
可以参见一下MSDN 的说明:http://msdn2.microsoft.com/en-us/library/aa490129.aspx

IA32实现中,没有使用fense 指令:

> mov ecx,dword ptr [esp+4]
> mov eax,1
> lock xadd dword ptr [ecx],eax

实现的时候 使用 "lock xadd" Atomic Instruction,IA32 中,Atomic Instruction能保证Memory Ordering, 不再需要Fense 指令。感兴趣,可以看看下面一篇文章: http://www.rdrop.com/users/paulmck/scalability/paper/ordering.2006.03.13a.pdf

567

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧