似乎英特尔的事务同步扩展 (TSX-NI) 在每个 CPU 的基础上工作。
这适用于_InterlockedXxx_HLE{Acquire,Release}
Hardware Lock Elision 函数 (HLE) 以及_xbegin
/ _xend
/etc。受限事务内存 (RTM) 功能。
在多核系统上使用这些功能的“正确”方式是什么?
鉴于他们的正确性保证,我认为我只需要担心这里的性能。
那么,考虑到线程总是有可能突然切换内核并因此这些指令可能需要退回到较慢的代码路径,我应该如何构建和编写我的代码以使我的代码具有最佳性能?
例如,我应该尝试显式设置线程 CPU 关联性,还是这是不好的做法?
还有什么我应该担心的吗?