我正在用 C 编写一个多线程程序,其中一个核心定期从链表的头部抓取一个项目,而其他核心将项目附加到列表的后面(使用 CAS 魔法来保证线程安全,其他人为我提供了) . 如果核心从列表的头部获取一个项目,我的程序似乎会运行得更快,它只是为下一个项目启动预取,这肯定是在另一个核心的缓存中。
目前我的目标是 AMD Opteron 6168,在 Debian Linux 上使用 gcc 编译:我试图找到这方面的文档,但我在陌生的水域。我所能找到的只是使用 -O3 来启用编译器插入的预取(我认为是 for 循环)以及一些 AMD 预取指令名称的提及,例如 PREFETCHW。
我不知道如何找到我所追求的参考,或者如何将这样的语句插入到 C 中,也许作为一个程序块?