一些os內核使用xchg
指令來實現spinlock
。在獲取鎖定功能的實現中,通常在使用xchg
指令獲取鎖定之前禁用中斷。那麼,xchg
指令可以確保內存順序?我的意思是可以xchg
指令確保禁用中斷後不會被調用?xchg指令可以確保內存順序嗎?
1
A
回答
1
沒有XCHG指令不能這樣做。 在XCHG指令執行過程中,處理器的LOCK信號被自動聲明,所以我們不需要額外的LOCK前綴來確保指令是以原子方式執行的。 XCHG總是以原子方式執行!並且不需要禁用中斷。
0
是的。 XCHG指令可以做到這一點。
我在why can MemoryBarrier be implemented as a call to xchg?上得到了更好的答案。
相關問題
- 1. 你可以聲明Angular 2中的Attribute指令的順序嗎?
- 2. jvm優化可以改變指令的順序嗎?
- 3. 我可以確保組件安裝順序嗎?
- 4. 唯一()保存順序嗎?
- 5. 數據框可以加入Spark保存順序嗎?
- 6. 使用tsort算法可以更好地保存順序嗎?
- 7. 確保Python命令的順序
- 8. 淘汰賽可保存排序順序
- 9. PyYAML - 是保存列表的順序嗎?
- 10. Javascript過濾器保存順序嗎?
- 11. node.js保存異步執行順序嗎?
- 12. 可以保存到github嗎?
- 13. 指令指針是一個程序可見的寄存器嗎?
- 14. 獨立指令可以通過Java編譯器或JVM交換指令順序嗎?
- 15. 我可以確保SQL服務代理中的對話對話順序嗎?
- 16. 可以mongoimport維護深嵌套鍵的指定順序嗎?
- 17. 我可以在oracle中插入數據時指定順序嗎?
- 18. Angular指令加載順序。
- 19. 指令的參數順序
- 20. Angularjs:指令加載順序
- 21. RDTSCP和指令順序
- 22. 保存順序droppables
- 23. 是否可以指定unordered_map的順序?
- 24. 我可以通過WCF保證IEnumerables的插入順序嗎?
- 25. 可以指令
- 26. 如何以%/?保存匹配順序
- 27. 以特定順序保存實體
- 28. Grails/GORM以錯誤的順序保存
- 29. 可以指定interfase到ssh命令嗎?
- 30. 我可以鏈接角度指令嗎?
XCHG總是以原子方式執行。但只有當操作數是內存時,鎖定信號纔是隱含的。當然,當所有的操作數都是寄存器的時候,不需要鎖定信號。 – Vince