我创建了一个共享对象并从两个不同的程序访问它并测量时间。
DATA 数组是两个进程之间的共享对象。
您没有准确描述如何运行不同版本(不同的进程?),但假设它们是连续的 - 您可能会看到 sleep() 的影响
当然,这取决于具体的实现和硬件,但很可能会让您的 CPU 进入某种省电/睡眠状态(这就是它的设计目的)。如果是这种情况,那么核心缓存将必须作为该过程的一部分进行刷新,并且您将在冷缓存中醒来。另一方面,whie 循环的目的是在磨削 CPU 并保持其活动状态(以及缓存)的同时执行繁忙的等待循环,除非您碰巧在此过程中进行了上下文切换。
确切的细节再次取决于实现,在 x86 上,您可以使用内联汇编来调用 Monitor+mwait 指令,这些指令允许您指定想要实现的确切 C 状态深度。深度越深,关闭的缓存就越多(主要与 L3 相关)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)