💡
原文英文,约500词,阅读约需2分钟。
📝
内容提要
在Visual Studio 2022 17.14中,引入了/forceInterlockedFunctions开关,Armv8.0默认开启,Armv8.1+默认关闭。该开关生成不同的原子操作以解决Armv8.0的性能问题。启用LSE特性会覆盖默认设置,建议在ARM64EC中保持开启。
🎯
关键要点
- 在Visual Studio 2022 17.14中引入了/forceInterlockedFunctions开关。
- 该开关在Armv8.0中默认开启,在Armv8.1+中默认关闭。
- 此开关生成不同的原子操作,以解决Armv8.0的性能问题。
- Armv8.0的互锁内联使用的指令不保证前进,可能导致性能问题。
- 启用LSE特性会覆盖Armv8.0的默认设置。
- 该选项仅适用于Arm64,不适用时将被忽略。
- 建议在ARM64EC中保持开启,以解决Arm64与x64之间的内存模型差异。
- 该标志影响多个互锁内联函数的支持情况。
❓
延伸问答
/forceInterlockedFunctions开关的主要功能是什么?
/forceInterlockedFunctions开关用于生成和链接与Armv8.1+大系统扩展(LSE)原子指令相关的原子操作,以解决Armv8.0的性能问题。
在Armv8.0和Armv8.1中,/forceInterlockedFunctions的默认设置是什么?
在Armv8.0中,/forceInterlockedFunctions默认开启,而在Armv8.1及以上版本中默认关闭。
启用LSE特性会对/forceInterlockedFunctions产生什么影响?
启用LSE特性会覆盖Armv8.0的默认设置,改变互锁操作的行为。
为什么在Armv8.0中需要使用/forceInterlockedFunctions开关?
因为Armv8.0的互锁内联使用的指令不保证前进,可能导致性能问题,因此需要使用该开关来生成不同的原子操作。
/forceInterlockedFunctions开关适用于哪些架构?
/forceInterlockedFunctions开关仅适用于Arm64架构,不适用时将被忽略。
在ARM64EC中,是否建议关闭/forceInterlockedFunctions开关?
不建议在ARM64EC中关闭/forceInterlockedFunctions开关,因为开启有助于解决Arm64与x64之间的内存模型差异。
➡️