作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
因此,出于某种原因,我无法理解为什么 Test and Test and Set 函数比标题中提到的书中的 Test and set 函数运行得更快的完整概念。让我详细说明......
在附录中的上述引用书中,它稍微涉及了计算机体系结构。我已经很好地掌握了这一点。它继续总结,由于缓存,TTAS 比 TAS 功能更快。我不明白这是怎么回事,为什么会这样。 TTAS 函数不会像 TAS 函数那样缓存。 TAS 功能的哪一部分导致其工作时间更长或导致 TTAS 功能工作时间更短的原因。
最佳答案
每个线程都有自己的缓存。只有当变量被标记为脏时才会更新缓存。 TAS(在操作系统级别)无论何时调用它都会将变量标记为脏,无论它是否成功设置值。这就是造成巨大开销的原因。
正因为如此,所有线程一直在使缓存失效。在 TTAS 情况下,您避免尽可能多地调用 TAS,因此只会在 TAS 调用和释放锁时使缓存无效,现在这种情况少得多。
请记住,这是我们学到的东西,我没有给你引用,所以你可能想多看看。
关于multithreading - 更好地解释 TAS Vs。 "The Art Of Multiprocessor Programming"Herlihy & Shavits 上下文中的 TTAS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26322991/
我是一名优秀的程序员,十分优秀!